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上直接和项目创始人在线沟通

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容