Nginx 配置更改时重新启动Docker服务

Nginx 配置更改时重新启动Docker服务,nginx,docker,Nginx,Docker,当配置文件更改时,如何重新启动服务,例如“nginx”?例如,我让Puppet创建了一些nginx cfg文件,并将它们放在一个卷上,该卷已装入我的nginx容器。目前我正在使用docker gen,但还有其他方法吗 Docker容器是短暂的。此外,Docker容器通过在容器中设置进程PID 1来“容器化”正在运行的任何进程。这意味着没有传统的init系统。事实上,根本没有init系统。正如您所知,当容器内的进程退出时,容器就会死亡。因此,如果我们从实现临时容器的角度来解决这个问题,您就不会重新

当配置文件更改时,如何重新启动服务,例如“nginx”?例如,我让Puppet创建了一些nginx cfg文件,并将它们放在一个卷上,该卷已装入我的nginx容器。目前我正在使用docker gen,但还有其他方法吗

Docker容器是短暂的。此外,Docker容器通过在容器中设置进程PID 1来“容器化”正在运行的任何进程。这意味着没有传统的init系统。事实上,根本没有init系统。正如您所知,当容器内的进程退出时,容器就会死亡。因此,如果我们从实现临时容器的角度来解决这个问题,您就不会重新启动服务。您可以使用修改后的配置创建一个新容器。正如thaJeztah在评论中提到的,您可以
docker重新启动nginx
您的容器来刷新配置

现在,有几种方法可以把这个方形的钉子锤成一个圆孔。你比那更好。。。然而,您已经注意到,
docker gen
将使您接近目标。同样,如果您深入了解
jwilder/nginx代理的工作原理,您将更好地了解docker gen在实践中的工作原理。但您可能已经看到了这一点,因为您已经在使用
docker gen


另一种选择是插入类似于
supervisords
的内容。在网上做这件事是有必要的。过去有很多人这样做过。因此,对于其他可能不理解这为什么能解决问题的人,supervisord成为您容器的PID 1,允许您“像正常情况一样”重新启动子nginx进程,但不会杀死您的容器。

无需使用
supervisord
重新启动nginx;如果考虑<代码> nGnx为容器;code>docker restart my nginx container
将重新启动nginx container,从而启动nginx。如果卷中的配置已更改,则也将重新加载配置。如果装载了新的配置数据并从卷中读取,则会重新启动容器。