gpt4 book ai didi

nginx - 同一主机上的两个容器之间的通信

转载 作者:行者123 更新时间:2023-12-02 18:49:08 25 4
gpt4 key购买 nike

这个想法很简单,我需要从一个容器向另一个容器发送信号以重新启动nginx

nginx中的第一个连接到ssh容器是一个好的解决方案?

您还有其他推荐的方法吗?

最佳答案

我不建议安装sshDocker容器不是虚拟机,并且应该尊重微服务架构以从其提供的许多优点中受益。

为了将信号从一个容器发送到另一个容器,您可以使用docker API。

首先,您需要在所需容器之间共享/var/run/docker.sock

docker run -d --name control -v /var/run/docker.sock:/var/run/docker.sock <Control Container>

要将信号发送到名为nginx的容器,您可以执行以下操作:
echo -e "POST /containers/nginx/kill?signal=HUP HTTP/1.0\r\n" | \
nc -U /var/run/docker.sock

另一个选项是使用带有自定义脚本的自定义图像,该脚本检查nginx配置文件,并且如果哈希值被更改,则会发送重新加载信号。这样,每次更改配置时,nginx都会自动重新加载,或者您可以使用注释手动重新加载。这类脚本在 kubernetes用户中很常见。以下是一个示例:
nginx "$@"
oldcksum=`cksum /etc/nginx/conf.d/default.conf`

inotifywait -e modify,move,create,delete -mr --timefmt '%d/%m/%y %H:%M' --format '%T' \
/etc/nginx/conf.d/ | while read date time; do

newcksum=`cksum /etc/nginx/conf.d/default.conf`
if [ "$newcksum" != "$oldcksum" ]; then
echo "At ${time} on ${date}, config file update detected."
oldcksum=$newcksum
nginx -s reload
fi

done

不要忘记安装 inotifywait软件包。

关于nginx - 同一主机上的两个容器之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42363887/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com