【发布时间】:2019-12-14 08:03:14
【问题描述】:
我们有一个 PHP(特别是 Laravel)应用程序,应该为生产环境进行 docker 化。但是与 Web Server 和 PHP-FPM 容器共享应用程序源代码存在问题。
Nginx 和 PHP-FPM 都应该可以访问应用程序源代码,所以这里是网络上建议的解决方法:
- 拥有两个独立的 Nginx 和 PHP-FPM 容器,并将源代码挂载到主机上并创建一个卷。然后,将此卷分配给这些容器。这个解决方案是不需要的,因为每次应用程序代码更改时,都应该重新构建整个堆栈并且应该刷新创建的卷。此外,这些任务应该在我们所有的服务器上执行,这可能会浪费大量时间。
-
在同一个容器上同时拥有 PHP-FPM 和 Nginx,并使用
supervisor或entrypoint脚本保持它们的进程运行。在这个解决方案中,当源代码发生变化时,我们只构建一次镜像,希望没有要刷新的共享卷,所以这似乎是一个很好的解决方法。但是,这个解决方案的主要问题是它违反了容器化背后的理念。 Docker 在其文档中说:每个容器应该有一个关注点(或正在运行的进程)。
但是在这里,我们有两个正在运行的进程!
是否有其他解决方案可以在生产环境上运行?不得不提的是,我们将在不久的将来使用 Swarm 或 Kubernetes。
谢谢。
【问题讨论】:
标签: php docker containers