我目前正在使用docker-compose和Docker开发一个webapp。目前,一个容器中有一个前端Nginx反向代理服务器,另一个容器中有一个Rails应用程序。
有时,Rails应用程序需要更改Nginx配置文件。我已经通过将配置目录作为共享卷安装在两个容器中来实现这一点。
但是,要在Rails应用程序修改后强制Nginx重新加载其配置文件,它需要向Nginx进程发送HUP信号。目前,我通过将主机的/var/run/docker.sock
安装到Rails应用程序容器中并使用gem来请求主机Docker将信号发送到正确的容器来实现这一点。
这很好但现在我worried about security。如果Rails容器被泄露,则攻击者将拥有对该主机的root访问权。
我考虑创建另一个容器,其唯一的工作是代理访问套接字并向主Rails应用程序公开有限的API。但是,当经纪人也受到损害时,我们遇到了同样的问题。不仅如此,但肯定有更简单的方法吗?
我搜索了一些解决方案,以限制可以在/var/run/docker.sock
上调用哪些API,但我找不到任何解决方案。
有没有人有任何想法?也许还有其他方法可以重新加载Nginx配置文件,而无需通过Docker API?