laradock 记录

git clone https://github.com/laradock/laradock.git 

例子:运行 NGINX 和 MySQL:

docker-compose up -d  nginx mysql

你可以从以下列表选择你自己的容器组合:

nginx,hhvm,php-fpm,mysql,redis,postgres,mariadb,neo4j,mongo,apache2,caddy,memcached,beanstalkd,beanstalkd-console,workspace.

说明:workspace和php-fpm将运行在大部分实例中, 所以不需要在up命令中加上它们.

2 - 进入 Workspace 容器, 执行像 (Artisan, Composer, PHPUnit, Gulp, ...)等命令

docker-composeexecworkspace bash

增加--user=laradock(例如docker-compose exec --user=laradock workspace bash) 作为您的主机的用户创建的文件. (你可以从docker-compose.yml修改 PUID (User id) 和 PGID (group id) 值 ).

3 - 编辑 Laravel 的配置.

如果你还没有安装 Laravel 项目,请查看How to Install Laravel in a Docker Container.

打开 Laravel 的.env文件 然后 配置 你的mysql的DB_HOST:

DB_HOST=mysql

4 - 打开浏览器访问 localhost (http://localhost/).

调试: 如果你碰到任何问题,请查看调试章节 如果你需要特别支持,请联系我,更多细节在帮助 & 问题章节

文档

[Docker]

列出正在运行的容器

docker ps

你也可以使用以下命令查看某项目的容器

docker-compose ps

关闭所有容器

docker-compose stop

停止某个容器:

docker-compose stop {容器名称}

删除所有容器

docker-compose down

小心这个命令,因为它也会删除你的数据容器。(如果你想保留你的数据你应该在上述命令后列出容器名称删除每个容器本身):*

进入容器 (通过 SSH 进入一个运行中的容器)

1 - 首先使用docker ps命令查看正在运行的容器

2 - 进入某个容器使用:

docker-composeexec{container-name} bash

例如: 进入 MySQL 容器

docker-composeexecmysql bash

3 - 退出容器, 键入exit.

编辑默认容器配置

打开docker-compose.yml然后 按照你想的修改.

例如:

修改 MySQL 数据库名称:

environment:MYSQL_DATABASE:laradock

修改 Redis 默认端口为 1111:

ports:    -"1111:6379"

编辑 Docker 镜像

1 - 找到你想修改的镜像的Dockerfile,

例如:mysql在mysql/Dockerfile.

2 - 按你所要的编辑文件.

3 - 重新构建容器:

docker-compose build mysql

更多信息在容器重建中点击这里.

建立/重建容器

如果你做任何改变Dockerfile确保你运行这个命令,可以让所有修改更改生效:

docker-compose build

选择你可以指定哪个容器重建(而不是重建所有的容器):

docker-compose build {container-name}

如果你想重建整个容器,你可能需要使用--no-cache选项 (docker-compose build --no-cache {container-name}).

增加更多软件 (Docker 镜像)

为了增加镜像(软件), 编辑docker-compose.yml添加容器细节, 你需要熟悉docker compose 文件语法.

查看日志文件

Nginx的日志在logs/nginx目录

然后查看其它容器日志(MySQL, PHP-FPM,...) 你可以运行:

docker logs {container-name}

[Laravel]

从 Docker 镜像安装 Laravel

1 - 首先你需要进入 Workspace 容器.

2 - 安装 Laravel.

例如 使用 Composer

composer create-project laravel/laravel my-cool-app"5.2.*"

我们建议使用composer create-project替换 Laravel 安装器去安装 Laravel.

关于更多 Laravel 安装内容请点击这儿.

3 - 编辑docker-compose.yml映射新的应用目录: 系统默认 Laradock 假定 Laravel 应用在 laradock 的父级目录中

更新 Laravel 应用在my-cool-app目录中, 我们需要用../my-cool-app/:/var/www替换../:/var/www, 如下:

application:build:./applicationvolumes:            -../my-cool-app/:/var/www

4 - 进入目录下继续工作..

cdmy-cool-app

5 - 回到 Laradock 安装步骤,看看如何编辑.env的文件。

运行 Artisan 命令

你可以从 Workspace 容器运行 artisan 命令和其他终端命令

1 - 确认 Workspace 容器已经运行.

docker-compose up -d workspace // ..and all your other containers

2 - 找到 Workspace 容器名称:

docker-compose ps

3 - 进入 Workspace 容器:

docker-composeexecworkspace bash

增加--user=laradock(例如docker-compose exec --user=laradock workspace bash) 作为您的主机的用户创建的文件.

4 - 运行任何你想的 :)

php artisan

composer update

phpunit

使用 Redis

1 - 首先务必用docker-compose up命令运行 (redis) 容器.

docker-compose up -d redis

2 - 打开你的Laravel的.env文件 然后 配置redis的REDIS_HOST

REDIS_HOST=redis

如果在你的.env文件没有找到REDIS_HOST变量。打开数据库配置文件config/database.php然后用redis替换默认 IP127.0.0.1,例如:

'redis'=>['cluster'=>false,'default'=>['host'=>'redis','port'=>6379,'database'=>0,],],

3 - 启用 Redis 缓存或者开启 Session 管理也在.env文件中用redis替换默认file设置CACHE_DRIVER和SESSION_DRIVER

CACHE_DRIVER=redis

SESSION_DRIVER=redis

4 - 最好务必通过 Composer 安装predis/predis包(~1.0):

composer require predis/predis:^1.0

5 - 你可以用以下代码在 Laravel 中手动测试:

\Cache::store('redis')->put('Laradock','Awesome',10);

使用 Mongo

1 - 首先在 Workspace 和 PHP-FPM 容器中安装mongo:

a) 打开 `docker-compose.yml` 文件

b) 在 Workspace 容器中找到 `INSTALL_MONGO` 选项:

c) 设置为 `true`

d) 在 PHP-FPM 容器中找到 `INSTALL_MONGO`

e) 设置为 `true`

相关配置项如下:

workspace:build:context:./workspaceargs:                -INSTALL_MONGO=true...php-fpm:build:context:./php-fpmargs:                -INSTALL_MONGO=true...

2 - 重建Workspace、PHP-FPM容器

docker-compose build workspace php-fpm

3 - 使用docker-compose up命令运行 MongoDB 容器 (mongo)

docker-compose up -d mongo

4 - 在config/database.php文件添加 MongoDB 的配置项:

'connections'=>['mongodb'=>['driver'=>'mongodb','host'=>env('DB_HOST','localhost'),'port'=>env('DB_PORT',27017),'database'=>env('DB_DATABASE','database'),'username'=>'','password'=>'','options'=>['database'=>'',]],//...],

5 - 打开 Laravel 的.env文件然后更新以下字段:

设置DB_HOST为mongo的主机 IP.

设置DB_PORT为27017.

设置DB_DATABASE为database.

6 - 最后务必通过 Composer 安装jenssegers/mongodb包,添加服务提供者(Laravel Service Provider)

composer require jenssegers/mongodb

更多细节内容点击这儿.

7 - 测试:

首先让你的模型继承 Mongo 的 Eloquent Model. 查看文档.

进入 Workspace 容器.

迁移数据库php artisan migrate.

[PHP]

安装 PHP 拓展

安装 PHP 扩展之前,你必须决定你是否需要FPM或CLI,因为他们安装在不同的容器上,如果你需要两者,则必须编辑两个容器。

PHP-FPM 拓展务必安装在php-fpm/Dockerfile-XX.(用你 PHP 版本号替换 XX).

PHP-CLI 拓展应该安装到workspace/Dockerfile.

修改 PHP-FPM 版本

默认运行PHP-FPM 7.0版本.

PHP-FPM 负责服务你的应用代码,如果你是计划运行您的应用程序在不同 PHP-FPM 版本上,则不需要更改 PHP-CLI 版本。

A) 切换版本 PHP7.0到 PHP5.6

1 - 打开docker-compose.yml。

2 - 在PHP容器的Dockerfile-70文件。

3 - 修改版本号, 用Dockerfile-56替换Dockerfile-70, 例如:

php-fpm:

build:

context: ./php-fpm

dockerfile: Dockerfile-70

4 - 最后重建PHP容器

docker-compose build php

更多关于PHP基础镜像, 请访问PHP Docker官方镜像.

B) 切换版本 PHP7.0或5.6到 PHP5.5

我们已不在本地支持 PHP5.5,但是你按照以下步骤获取:

1 - 克隆https://github.com/laradock/php-fpm.

2 - 重命名Dockerfile-56为Dockerfile-55.

3 - 编辑文件FROM php:5.6-fpm为FROM php:5.5-fpm.

4 - 从Dockerfile-55构建镜像.

5 - 打开docker-compose.yml文件.

6 - 将php-fpm指向你的Dockerfile-55文件.

修改 PHP-CLI 版本

默认运行PHP-CLI 7.0版本

说明: PHP-CLI 只用于执行 Artisan 和 Composer 命令,不服务于你的应用代码,这是 PHP-FPM 的工作,所以编辑 PHP-CLI 的版本不是很重要。 PHP-CLI 安装在 Workspace 容器,改变 PHP-CLI 版本你需要编辑workspace/Dockerfile. 现在你必须手动修改 PHP-FPM 的Dockerfile或者创建一个新的。 (可以考虑贡献功能).

安装 xDebug

1 - 首先在 Workspace 和 PHP-FPM 容器安装xDebug:

a) 打开 `docker-compose.yml` 文件

b) 在 Workspace 容器中找到 `INSTALL_XDEBUG` 选项

c) 改为 `true`

d) 在 PHP-FPM 容器中找到 `INSTALL_XDEBUG ` 选项

e) 改为 `true`

例如:

workspace:build:context:./workspaceargs:                -INSTALL_XDEBUG=true...php-fpm:build:context:./php-fpmargs:                -INSTALL_XDEBUG=true...

2 - 重建容器docker-compose build workspace php-fpm

[Misc]

使用自定义域名 (替换 Docker 的 IP)

假定你的自定义域名是laravel.dev

1 - 打开/etc/hosts文件添加以下内容,映射你的 localhost 地址127.0.0.1为laravel.dev域名

127.0.0.1    laravel.dev

2 - 打开你的浏览器访问{http://laravel.dev}

你可以在 nginx 配置文件自定义服务器名称,如下:

server_name laravel.dev;

安装全局 Composer 命令

为启用全局 Composer Install 在容器构建中允许你安装 composer 的依赖,然后构建完成后就是可用的。

1 - 打开docker-compose.yml文件

2 - 在 Workspace 容器找到COMPOSER_GLOBAL_INSTALL选项并设置为true

例如:

workspace:build:context:./workspaceargs:                -COMPOSER_GLOBAL_INSTALL=true...

3 - 现在特价你的依赖关系到workspace/composer.json

4 - 重建 Workspace 容器docker-compose build workspace

安装 Prestissimo

Prestissimo是一个平行安装功能的 composer 插件。

1 - 在安装期间,使全局 Composer Install 正在运行:

点击这个 [启用全局 Composer 构建安装](#Enable-Global-Composer-Build-Install) 然后继续步骤1、2.

2 - 添加 prestissimo 依赖到 Composer:

a - 现在打开workspace/composer.json文件

b - 添加"hirak/prestissimo": "^0.3"依赖

c - 重建 Workspace 容器docker-compose build workspace

安装 Node + NVM

在 Workspace 容器安装 NVM 和 NodeJS

1 - 打开docker-compose.yml文件

2 - 在 Workspace 容器找到INSTALL_NODE选项设为true

例如:

workspace:build:context:./workspaceargs:                -INSTALL_NODE=true...

3 - 重建容器docker-compose build workspace

Debugging

这里是你可能面临的常见问题列表,以及可能的解决方案.

看到空白页而不是 Laravel 的欢迎页面!

在 Laravel 根目录,运行下列命令:

sudo chmod -R 777 storage bootstrap/cache

看到 "Welcome to nginx" 而不是 Laravel 应用!

在浏览器使用http://127.0.0.1替换http://localhost.

看到包含address already in use的错误

确保你想运行的服务端口(80, 3306, etc.)不是已经被其他程序使用,例如apache/httpd服务或其他安装的开发工具

Laradock 升级

从 Docker Toolbox (VirtualBox) 移动到 Docker Native (for Mac/Windows),需要从 Laradock v3.* 升级到 v4.*:

停止 Docker 虚拟机docker-machine stop {default}

安装 DockerMacWindows.

升级 Laradock 到v4.*.*(git pull origin master)

像之前一样使用 Laradock:docker-compose up -d nginx mysql.

说明:如果你面临任何上面的问题的最后一步:重建你所有的容器

docker-compose build --no-cache

"警告:容器数据可能会丢失!"

贡献

这个小项目是由一个有一个全职工作和很多的职责的人建立的,所以如果你喜欢这个项目,并且发现它需要一个 bug 修复或支持或新软件或升级任何容器,或其他任何. . 你是非常欢迎,欢迎毫不不犹豫地贡献吧:)

阅读我们的贡献说明

帮助 & 问题

从聊天室Gitter社区获取帮助和支持.

你也可以打开 Github 上的issue(将被贴上问题和答案) 或与大家讨论Gitter.

Docker 或 Laravel 的特别帮助,你可以在Codementor.io上直接和项目创始人在线沟通

推荐阅读更多精彩内容