使用Docker容器化Web应用程序:将源代码复制到多个图像?

我有一个由nginx,php-fpm和mariadb组成的Web应用程序XY。 我使用docker-compose成功地将所有东西分解到了它自己的容器中,并且像魅力一样运行。 为了开发的目的,我只装了一个包含实际的源代码/ php代码的本地目录。 在将其部署到分段或生产环境时,Docker文档告诉我要将源代码烘焙到实际的图像中。 在这种情况下,我必须将源代码复制到nginx以及构build它时的php-fpm图像,因为它们都需要它。

当应用程序本身变大(更多的资产和库)时,nginx和php-fpm图像都会增长。 在我看来这违反了“尽可能小的形象”的规则,这似乎是如此深刻的错误对我来说。 我总是学会不要重复自己,把逻辑存储在一个地方,让事情等等。

这是正确的做法,还是我错过了什么?

使用Nginx和PHP7-FPM对Dockerise PHP应用程序进行有趣的写作。 本示例使用卷来共享PHP和Nginx之间的代码。

你关于不重复自己的观点并不错,但是考虑一下你可能并不总是需要相同数量的Nginx容器和PHP容器。 也许你的应用程序中的PHP部分比负载静态资产的部分承受的负担更重,你会想独立地扩展它。 如果你使用类似Docker Swarm的东西,你甚至不能保证所有的PHP容器都在同一个主机上。

您的图像是部署工件,将相同的静态内容烘焙成多个图像没有任何问题。

在这种情况下,我可能会创build一个包含源代码的新容器。 这个容器可以将源代码的目录导出到nginx和php-fpmcan都可以挂载的卷中。