Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用Docker容器部署Laravel_Php_Mysql_Laravel_Docker_Nginx - Fatal编程技术网

Php 使用Docker容器部署Laravel

Php 使用Docker容器部署Laravel,php,mysql,laravel,docker,nginx,Php,Mysql,Laravel,Docker,Nginx,我计划用docker容器部署我的Laravel应用程序。 我的应用程序需要以下组件: MySQl服务器 nginx服务器 用于激活ssl的cerbot Laravel的队列工人 由于该应用程序仍在开发中(可能永远都在开发中),因此它应该非常容易更新(我将使用GitLab CI/CD使其自动化),并且在更新过程中应该尽可能减少停机时间。 此外,我希望能够承载应用程序的多个实例,因此只有Laravel的.env文件不同。除了实时应用程序之外,我还想托管一个临时应用程序 我当前的方法是为MySQL

我计划用docker容器部署我的Laravel应用程序。 我的应用程序需要以下组件:

  • MySQl服务器
  • nginx服务器
  • 用于激活ssl的cerbot
  • Laravel的队列工人
由于该应用程序仍在开发中(可能永远都在开发中),因此它应该非常容易更新(我将使用GitLab CI/CD使其自动化),并且在更新过程中应该尽可能减少停机时间。 此外,我希望能够承载应用程序的多个实例,因此只有Laravel的
.env
文件不同。除了实时应用程序之外,我还想托管一个临时应用程序


我当前的方法是为MySQL服务器创建一个容器,一个用于nginx服务器,另一个用于队列工作者。应用程序代码将是nginx服务器容器和队列工作者容器中的一个层。更新应用程序时,我会重建nginx conatiner和queue worker容器。
这是一个好方法吗?还是有更好的方法来实现这一点?对于我的mysql服务器,nginx服务器,php版本,。。。为了在应用程序不停机的情况下保持最新状态?

docker的主要思想是将应用程序按容器划分。所以是的,一次服务有一个容器是很好的。在您的示例中,我建议将MySQL保存在一个容器中,将队列工作者保存在另一个容器中,以此类推。因此,每个服务都有容器。然后建议创建内部摘要网络并将容器连接到它们。此外,我建议使用docker卷存储所有应用程序数据。为了使配置更简单,我建议使用docker compose。

到目前为止,您到底尝试了什么?零停机看起来像是有很多文档记录的东西。此外,从您的POV中定义“好方法”的是什么?有什么东西不能使用吗?为什么在更新应用程序时需要重建容器?我认为重启就足够了。@NicoHaase我还没有真正尝试过任何东西,因为我是Docker的新手,仍然在研究如何部署我的应用程序。随着应用程序的每次更新,Docker容器的重建似乎有点夸张。我将把我的应用程序代码放在两个容器中,这意味着不必要的冗余。@nmfzone如果应用程序是容器的一个附加层,我不必重新构建容器吗?cerbot呢。他们对如何与docker一起使用它们有自己的看法。