推荐给Docker上的Artisan

我还没有find一种在基于Docker的本地开发环境中运行Laravel Artisan命令的优雅而有效的方法。

有人可以提出build议或“适当”的方式来做这样的事情吗?

或者,有没有人find一个干净利落的方式? 理想的例子或build议。

我考虑过的事情:

  • 一个新的容器(共享相同的音量和数据库链接)与SSH,只是为了运行命令(似乎讨厌)。
  • 主pipe中的黑客可能最终会在现场(不理想)运行。
  • 编辑数据库configuration,或试图在“主机”环境中进行破解,至less可以从主机运行迁移等任何事情。
  • 创buildWeb前端运行的东西(真的很讨厌)。
  • 试图build立一个“信号”的东西。

我仍然对Docker感兴趣,这是一种全新的容器方法。

我想我想平衡酷开发的东西与为什么做我需要另一个假服务器只是得到它的工作已经。

我很愿意为我的开发工作stream做出承诺,但是在某些情况下使用它似乎变得很尴尬,比如这个…

任何build议和意见,欢迎。 谢谢大家。

关于Docker的最佳实践是在自己的容器中运行每个进程。 因此,运行artisan命令的理想方法是创build专门用于此目的的容器的图像。

我已经创build了一个图像,可以从Docker Hub dylanlindgren/docker-laravel-artisan拉出来,它的效果非常好。 它也在GitHub上 ,如果你想看看它背后的Dockerfile

我还写了一篇博客文章,描述所有这些独立容器的组合方式。

Docker 1.3带来新的命令exec现在你可以像进入“运行”容器一样

 docker exec -it my-container-name /bin/bash 

之后,你可以运行你想要的任何命令

 php artisan --version 

有几个可能性…

  1. 将容器中的主机目录挂载到您的Laravel应用程序所在的文件夹中。 这样,你可以运行php artisan migratecomposer update主机composer update 。 但是,您可能在部署时遇到问题,因为您必须在服务器上复制环境的这一部分。

  2. 添加一个SSH服务器到你的容器(这是不推荐的, 这是一个很好的讨论 )。

  3. 构build和使用nsenter ,一个“进入”正在运行的容器并获取shell访问权限的工具。 请注意,我没有使用它,我刚刚通过上面的链接中的参考find它。

如果你主要对部署感兴趣,并且通过dockerfile来做,那么答案就是添加composer installphp artisan migrate到你的dockerfile,以便在构build容器时运行。

我有兴趣听到更多的答案。 这是我刚刚进入以及想了解更多的东西。

我使用SSH并从容器内的terminal运行迁移。

我个人喜欢Phusion将Docker用作“轻量级虚拟机”的方法 。 所以我用他们的baseimage-docker来扩展我为Laravel应用程序创build自己的Docker镜像 。

我知道Phusion的形象在Docker社区中可能是有争议的, SSH被一些主张Docker容器作为微服务的人所诟病。 但是,我对Phusion的方法很满意,直到有更多的多容器方法的工具和实践。