在 Docker Swarm 集群中自动重新加载 Nginx 配置

问题描述

在我的起始位置,我有一个 Nginx Docker 服务,该服务根据需要在不同服务器之间进行复制。 (Docker Swarm) 在 glusterfs 的帮助下,可以通过挂载在每个服务器上访问 Nginx 配置。我想我可以在每次使用 inotify 更改配置时重新加载 Nginx。但是,这不起作用,经过研究,我发现 inotify 不适用于安装。是否有解决方法或替代方法

我当前重新加载 Nginx代码

Dockerfile:

FROM Nginx
copY NginxReloader.sh /usr/local/cloudsys/bin/NginxReloader.sh
copY docker-entrypoint.sh /usr/local/cloudsys/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/cloudsys/bin/NginxReloader.sh; \
    chmod +x /usr/local/cloudsys/bin/docker-entrypoint.sh; \
    apt-get update && apt-get install -y --no-install-recommends apt-utils; \
    apt-get install inotify-tools -y
ENTRYPOINT [ "/usr/local/cloudsys/bin/docker-entrypoint.sh" ]
CMD ["Nginx","-g","daemon off;"]

docker-entrypoint.sh

#!/bin/bash
echo "loading script..."
sh -c "/usr/local/cloudsys/bin/NginxReloader.sh &"
exec "$@"

NginxReloader.sh

#!/bin/bash

while true
do
 inotifywait --exclude .swp -e create -e modify -e delete -e move /etc/Nginx/conf.d/
 Nginx -t
 if [ $? -eq 0 ]
 then
  echo "Detected Nginx Configuration Change"
  echo "Executing: Nginx -s reload"
  Nginx -s reload
 fi
done

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)