更新上游服务器时重新启动nginx容器

时间:2014-10-10 02:58:38

标签: nginx docker

我想在我的nginx中添加/删除在docker容器中运行的服务器

我在Dockerfile中使用ADD命令将我的nginx.conf添加到/ etc / nginx目录。

# Copy a configuration file from the current directory
ADD nginx.conf /etc/nginx/

然后在我正在运行的nginx容器中有一个像这样的

# List of application servers
upstream app_servers {
    server 172.17.0.91:9000;
    server 172.17.0.92:9000;
    server 172.17.0.93:9000;
}

如何重新启动我的nginx才能使编辑过的nginx.conf生效?

提前谢谢你!

5 个答案:

答案 0 :(得分:37)

初始化Docker Swarm时,建议不要重新启动容器,因为它可能会删除nginx服务。所以如果你需要一个替代docker restart;您可以进入容器内部并运行nginx -s reload

例如,在docker env中,如果您有名为nginx的容器

docker exec <nginx_container_id> nginx -s reload

答案 1 :(得分:13)

重新加载NGINX配置运行命令

docker kill -s HUP container_name

https://blog.docker.com/2015/04/tips-for-deploying-nginx-official-image-with-docker/

答案 2 :(得分:3)

如果要重新启动NGINX进程,请运行以下命令重新启动容器:

docker restart <container name>

https://blog.docker.com/2015/04/tips-for-deploying-nginx-official-image-with-docker/

答案 3 :(得分:1)

如果要从容器中执行此操作,则需要服务/配置发现。像coreOS/etcdApache Zookeeper这样的工具是为了促进这一过程。公平警告:对于简单的应用程序,这些可能有点难以管理。

还有docker-gen,这有点容易。对于您正在描述的场景,甚至有specific pre-made script

答案 4 :(得分:0)

所有答案都是正确的,但只是为了澄清有许多不同的方法可以实现相同的结果。 例如

  1. docker kill -s SIGHUP container_name
  2. docker run nginx_image nginx -s reload
  3. docker exec -t container_name nginx -s reload

Docker-Compose 的工作原理几乎相同:

docker-compose kill -s SIGHUP container_name