2014-10-10 72 views
4

我想添加/删除一个码头工人容器重启nginx的容器,当上游服务器更新

我使用Dockerfile add命令我nginx.conf添加到/ etc/nginx的目录内运行在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的效果CONF?

谢谢你提前!

+1

因为要修改你的Dockerfile容器,你需要重建码头工人形象,从而从该映像运行一个新的容器。没有办法可以重新启动位于废弃容器中的nginx进程来读取它没有的新配置文件。 – Thomasleveil 2014-10-10 08:01:45

+0

我想我真的很不理解码头工人。我想,外部脚本,当更新时,我会做码头重启或其他生效。它有点不方便重建图像。因为我有其他脚本修改nginx配置。我想,我会退出使用nginx docker。但是,嘿,我使用码头沉重地对其他应用程序。感谢你的回答。 – Hokutosei 2014-10-10 13:16:33

回答

1

如果你想从一个容器内做到这一点,你将需要服务/配置发现。像coreOS/etcdApache Zookeeper这样的工具是为了促进这一过程。公平的警告:对于简单的应用程序,这些可能有点难以管理。

还有docker-gen,这有点容易起来。您正在描述的场景中甚至有一个specific pre-made script

+0

谢谢nanaeu,现在生病了吧。病后回来,我的结果是什么。如果这有效,我可能会改变在生产中使用它。截至目前,我们只有容器,裸露的nginx和清漆。当然在测试机器上测试nginx容器。再次感谢您的建议! – Hokutosei 2014-10-10 17:15:33

16

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

例如,在搬运工ENV,如果有一个名为nginx

docker exec <nginx_container_id> nginx -s reload 
+2

这似乎是更好,更不具破坏性的答案。 – 2018-01-03 18:21:34