我有一个Web应用程序XY,它由nginx,php-fpm和mariadb组成。我使用docker-compose成功地将所有内容拆分为自己的容器,并且它像魅力一样运行。出于开发目的,我只挂载了一个包含实际源/ php代码的本地目录。将其部署到临时或生产环境时,Docker文档告诉我将源代码烘焙到实际图像中。在这种情况下,我必须将源代码复制到nginx以及构建它时的php-fpm图像,因为它们都需要它。
当应用程序本身变得更大(更多资产和库)时,nginx和php-fpm图像都会增长。在我看来,这有点违反了“保持图像尽可能小”的规则,这对我来说似乎是非常错误的。我一直学会不重复自己,将逻辑存储在一个地方,鼓励事物等等。
这是正确的做法,还是我错过了什么?
答案 0 :(得分:2)
在这种情况下,我可能会创建一个包含源代码的新容器。这个容器可以导出nginx和php-fpmcan都可以挂载的卷中的源代码目录。
答案 1 :(得分:1)
Dockerise your PHP application with Nginx and PHP7-FPM上有一篇有趣的文章。此示例使用卷在PHP和Nginx之间共享代码。
关于不重复自己的观点并不是一个糟糕的观点,但考虑到你可能并不总是想要相同数量的Nginx容器和PHP容器。也许你的应用程序的PHP部分将比提供静态资产的部分负载更多,并且你想要独立地扩展它。如果您使用Docker Swarm之类的东西,您甚至不能保证所有PHP容器都在同一主机上。
您的图像是部署工件,将相同的静态内容烘焙到多个图像中并没有任何问题。