【发布时间】:2020-02-23 15:01:43
【问题描述】:
我计划使用 docker 容器部署我的 Laravel 应用程序。 我的应用程序需要以下组件:
- MySQl 服务器
- nginx 服务器
- 用于激活 ssl 的 cerbot
- Laravel 的队列工作者
由于应用程序仍在开发中(并且可能会一直如此),它应该很容易更新(我将使用 GitLab CI/CD 自动完成),并且在更新期间它应该有尽可能少的停机时间。
另外,我希望能够托管应用程序的多个实例,因此只有 Laravel 的 .env 文件不同。除了实时应用程序之外,我还想托管一个临时应用程序。
我目前的方法是为 MySQL 服务器创建一个容器,一个用于 nginx 服务器,一个用于队列工作者。应用程序代码将是 nginx 服务器容器和队列工作容器中的一个层。更新应用程序时,我会重建 nginx conatiner 和 queue worker 容器。
这是一个好方法吗?还是有更好的方法来实现这一目标?对于我的 mysql 服务器、nginx 服务器、php 版本……保持最新状态而不会导致应用程序停机的好方法是什么?
【问题讨论】:
-
到目前为止,您到底尝试了什么?零停机时间看起来像是有据可查的东西。此外,什么定义了 POV 中的“好方法”?有什么不能用的吗?
-
为什么在更新应用时需要重新构建容器?我觉得重启就够了。
-
@NicoHaase 我还没有真正尝试过任何东西,因为我是 Docker 新手,并且仍在研究如何部署我的应用程序的概念。每次更新我的应用程序都会重建 Docker 容器,这似乎有点夸张。而且我会将我的应用程序代码放在两个容器中,这意味着不必要的冗余。
-
@nmfzone 如果应用程序是容器的额外层,我不需要重建容器吗?
标签: php mysql laravel docker nginx