【问题标题】:How to create Docker image,Dockerfile of LAravel application from existing docker environment for Laravel如何从现有的 Laravel docker 环境创建 Docker 镜像,LAravel 应用程序的 Dockerfile
【发布时间】:2016-10-28 12:58:03
【问题描述】:

我有 dockervel 环境,用于 Laravel 的 docker 容器,我真的很难让它在我的机器上运行。

我使用 dockervel 图像的方式在此处描述http://www.spiralout.eu/2015/12/dockervel-laravel-development.html

开发了一个应用程序,包括用于 BDD 的 Behat 和 PHPUnit 测试在这个环境中t,我必须从中制作图像并说明如何使用它我很困惑如何创建 Dockerfile ?

感谢任何帮助

【问题讨论】:

标签: laravel docker dockerfile docker-image


【解决方案1】:

首先,dockervel 不是一个单一的镜像。它由 docker-compose 编排在一起的多个图像组成(参见 docker-compose.yml)。这样做的原因是您不需要每次都需要所有部件(例如,当您只想与工匠一起工作时,您不会加载 nodejs)。您也可以更改部件(例如,您可以使用 Postgres 更改 MySQL)。

如果你想共享你的项目,最简单的方法是共享整个 dockervel 文件夹(请省略 node_modules 文件夹,你可以使用dcomposer install 重新创建它,以及数据库文件夹)。

如果你真的想把它变成一个单一的 dockerfile(不是那么好),你应该将每个 dockerfile 合并成一个单一的,你最终会得到一个巨大且不灵活的容器。

【讨论】:

  • 啊哈,好吧,他只需要能够运行它,包括一些单元测试。问题:哪个数据库文件夹(如 dockervel/databse 或 dockervel/www/database 或其他)?这让我感到困惑,如果我像 dockervel 文件夹一样交付它(例如通过 github),他显然不需要运行 dockervel 教程中的所有步骤,但我不确定是什么让它表现得很好? 他可能需要运行 ./aliases.sh ,dup , dpermit , dartisan migrate ..?
  • 最好的方式是只共享www文件夹(不包括node_modules、vendor等)合作伙伴应该git clone dockervelgit checkout builder,克隆你的www文件夹到dockervel的www,sudo su. ./aliases.sh dcomposer install 重新创建依赖关系,dpermit 修复许可,dup 运行整个包,dartisan migrate 为他自己的数据库创建表。当您共享一个项目时,您不必共享整个 DB 条目,但您需要启动 DB 结构。
  • 我能运行一些 AngularJS 吗?我还需要运行 dnodejs npm install 什么的?
【解决方案2】:

这不是您问题的答案,但我对 dockervel 也有一些困难,并考虑简化 Laravel 项目的 docker 实现。

结果是https://github.com/purinda/docker-laravel

这使您能够轻松地与 Laravel CLI 命令(例如 artisan)进行通信,并在使用多容器环境的 docker 环境中通过 phpunit 运行单元测试。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 2017-10-27
    • 2017-05-27
    • 2023-04-10
    • 1970-01-01
    相关资源
    最近更新 更多