【问题标题】:Deploying Laravel with Docker containers使用 Docker 容器部署 Laravel
【发布时间】: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


【解决方案1】:

docker 的主要思想是按容器划分您的应用程序。所以是的,为一项服务配备一个容器是件好事。在您的示例中,我建议将 MySQL 保存在一个容器中,将队列工作器保存在另一个容器中,依此类推。结果,您将拥有每个服务的容器。然后建议创建内部 docket 网络并将容器连接到它们。另外,我建议使用 docker 卷来存储您的所有应用程序数据。为了更容易,我建议使用 docker compose 进行配置。

【讨论】:

  • cerbot 怎么样。他们有自己的suggestions 关于如何将它们与 docker 一起使用。
猜你喜欢
  • 1970-01-01
  • 2019-11-19
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 2021-12-19
相关资源
最近更新 更多