文档
列出正在运行的容器
docker ps
如果你只想看当前这个项目的容器,你也可以执行下面这个命令:
docker-compose ps
关闭所有正在运行的容器
docker-compose stop
停止单个容器:
docker-compose stop {container-name}
删除所有现有容器
docker-compose down
通过命令进入容器
1.首先使用docker ps
列出当前正在运行的容器:
2.使用下面的命令进入任意容器:
docker-compose exec {container-name} bash
例如: 进入MySQL容器
docker-compose exec mysql bash
例如: 进入MySQL并在MySQL容器中使用命令提示符
docker-compose exec mysql mysql -u homestead -psecret
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-compose logs {container-name}
docker-compose logs -f {container-name}
更多选项
安装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.从PHP 7.0
切换到PHP 5.6
打开
docker-compose.yml
在PHP容器部分搜索
Dockerfile-70
通过使用
Dockerfile-56
替换Dockerfile-70
来改变版本号, 就像这样:php-fpm: build: context: ./php-fpm dockerfile: Dockerfile-56 ...
- 最后重新构建容器
docker-compose build php-fpm
关于更多PHP基础镜像的信息,请访问PHP官方Docker镜像.
B.切换PHP 7.0
或 5.6
为PHP 5.5
我们不在原生支持PHP5.5,单您可以通过几个步骤获得它:
- 克隆
https://github.com/laradock/php-fpm
- 重命名
Dockerfile-56
toDockerfile-55
- 编辑
FROM php:5.6-fpm
toFROM php:5.5-fpm
- 构建一个
Dockerfile-55
的镜像 - 打开
docker-compose.yml
文件 - 将
php-fpm
指向你的Dockerfile-55
文件
修改PHP-CLI版本
默认情况下使用的是PHP-CLI 7.0
注意: 编辑PHP-CLI版本并不是非常重要。PHP-CLI仅用于Artisan Commands&Composer。它不提供应用程序代码,这是PHP-FPM的工作。
PHP-CLI安装在Workspace容器中,要更改PHP-CLI版本,您需要编辑workspace/Dockerfile
现在,您必须手动编辑Dockerfile
或创建一个新的PHP-FPM
安装xDebug
- 首先在Workspace容器中和PHP-FPM容器中安装
xDebug
- 打开
docker-compose.yml
文件 - 在Workspace容器中搜索
INSTALL_XDEBUG
参数 - 将它设置为true
- 在PHP-FPM容器中搜索
INSTALL_XDEBUG
参数 - 将它设置为true
- 打开
它将是这样的:
workspace:
build:
context: ./workspace
args:
- INSTALL_XDEBUG=true
...
php-fpm:
build:
context: ./php-fpm
args:
- INSTALL_XDEBUG=true
...
打开
laradock/workspace/xdebug.ini
和laradock/php-fpm/xdebug.ini
并至少启用以下配置:xdebug.remote_autostart=1 xdebug.remote_enable=1 xdebug.remote_connect_back=1
重新构建容器
docker-compose build workspace php-fpm
有关如何使用IDE配置xDebug工作,请查看此仓库,如果你在Linux下使用Phpstorm,请继续阅读下一节。
在Linux上为PhpStorm设置远程调试
确保你已经按照上面的步骤安装XDebug.
确保Xdebug接收连接并监听端口9000(应该是默认配置)
.
创建一个名为
laradock
的服务器(与环境中的PHP_IDE_CONFIG键匹配),并确保将项目根路径与服务器正确映射。
.
开始监听调试连接,放置一个断点,干得漂亮!
开始或停止xDebug
通过安装xDebug,你可以在默认情况下启用时运行。
要控制xDeubg(在php-fpm容器中)的行为,可以在laradock根文件夹运行以下命令(在运行docker-compose提示符的同一地方)
- 从默认运行中停止xDebug:
.php-fpm/xdebug stop
- 打开xDebug:
.php-fpm/xdebug start
- 查看状态:
.php-fpm/xdebug status
.
注意: 如果.php-fpm/xdebug
不执行并给出Permission Denied
错误,问题可能是xdebug
文件没有执行权限,可以运行chmod
命令来设置所需访问权限。
安装PHP部署工具Deployer
- 打开
docker-compose.yml
文件 - 在Workspace容器中搜索参数
INSTALL_DEPLOYER
- 将其设置为true 应该是这样的:
4.重新构建这个容器workspace: build: context: ./workspace args: - INSTALL_DEPLOYER=true ...
docker-compose build workspace
准备生产环境的Laradock
建议为生产环境创建一个自定义的docker-compose.yml
文件,因此Laradock附带的production-docker-compose.yml
文件应当包含您计划在生产中运行的容器(使用示例: docker-compose -f production-docker-compose.yml up -d nginx mysql redis ...
).
注意:数据库( MySQL/MariaDB/...) 端口不应该在生产环境中转发,这是非常危险的,除非有特殊告知需要在生产环境中转发端口,因为 Docker 容器会自动映射到宿主机的端口上。所以一般情况下一定要删除这些行:
ports:
- "3306:3306"
要详细了解Docker如何发布端口,请阅读关于此主题的优秀文章.
在Digital-Ocean上安装Laravel和Docker
使用Jenkins
- 启动容器
docker-compose up -d jenkins
,进入容器方式docker-compose exec jenkins bash
- 浏览器打开
http://localhost:8090/
(如果你没用修改默认端口映射) - 从web应用程序进行身份验证
- 默认用户名是
admin
- 默认密码是
docker-compose exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
(以root方式进入容器docker-compose exec --user root jenkins bash
)
- 默认用户名是
- 安装一些插件
- 创建你的第一个admin用户或继续组委管理员
注意: 要添加用户,请进入 http://localhost:8090/securityRealm/addUser
并访问http://localhost:8090/restart
进行重启
你可能想更改默认安全配置,请进入http://localhost:8090/configureSecurity/
在授权下选择“Anyone can do anything(任何人都可以执行任何操作)”或Project-based Matrix Authorization Strategy(基于项目的矩阵授权策略”或其他任何操作)。
在Docker容器中安装Laravel
- 首先你需要进入Workspace容器
安装Laravel
使用composer的例子
composer create-project laravel/laravel my-cool-app "5.2.*"
我们推荐使用
composer create-project
代替Laravel安装器,来安装Laravel 有关Laravel安装的更多信息,请点击此处编辑
docker-compose.yml
文件以映射新的应用程序路径默认情况下,Laradock假定Laravel应用程序位于laradock文件夹的父目录中。 由于新的Laravel应用位于
my-cool-app
文件夹中,因此我们需要使用../my-cool-app/:/var/www
替换../:/var/www
,如下所示:application: image: tianon/true volumes: - ../my-cool-app/:/var/www ...
- 进入该文件并开始工作
cd my-cool-app
- 返回到Laradock安装步骤,了解如何编辑
.env
文件
运行Artisan命令
你可以在workspace容器中运行artisan命令和许多其他终端命令。
- 确保你的workspace容器是出在运行中的。
docker-compose up -d workspace // ..and all your other containers
- 找到workspace容器名称:
docker-compose ps
- 进入workspace容器
添加docker-compose exec workspace bash
--user=laradock
(例如docker-compose exec --user=laradock workspace bash
)以创建你的主用户 - 运行任何你想要的:)
php artisan
Composer update
phpunit
运行Laravel队列工作者
- 首先添加
php-worker
容器,这和PHP-FPM容器类似。- 打开
docker-compose.yml
文件 - 只需在PHP-FPM容器下复制粘贴本节即可添加一个新的服务容器
php-worker: build: context: ./php-worker dockerfile: "Dockerfile-${PHP_VERSION}" #Dockerfile-71 or #Dockerfile-70 available args: - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL} #Optionally install PGSQL PHP drivers volumes_from: - applications depends_on: - workspace extra_hosts: - "dockerhost:${DOCKER_HOST_IP}" networks: - backend
- 打开
- 开始一切
docker-compose up -d php-worker
使用Redis
- 首先确保你的
redis
容器使用docker-compose up
启动docker-compose up -d redis
要执行redis命令,首先进入redis容器
docker-compose exec redis bash
,然后进入redis-cli
- 打开你的Laravel的
.env
文件并设置REDIS_HOST
为 `redis
如果你正在使用Laravel,并且你么有在你的REDIS_HOST=redis
.env
文件中找到REDIS_HOST
变量,转到数据库配置文件config/database.php
并用redis
替换默认127.0.0.1
,Redis如下所示:'redis' => [ 'cluster' => false, 'default' => [ 'host' => 'redis', 'port' => 6379, 'database' => 0, ], ],
- 启用Redis缓存或用于会话管理。还要从
.env
文件中设置CACHE_DRIVER
和ESSION_DRIVER
为redis,来替换默认的file
。CACHE_DRIVER=redis SESSION_DRIVER=redis
- 最终确保你通过composer安装了
predis/predis
包(~1.0)
composer require predis/predis:^1.0
- 您可以使用以下代码从Laravel手动测试它
\Cache::store('redis')->put('Laradock', 'Awesome', 10);
使用Mongo
- 首先在Workspace和PHP-FPM容器中安装
mongo
- 打开
docker-compose.yml
文件 - 在Workspace容器中搜索参数
INSTALL_MONGO
- 将它设置为
true
- 在PHP-FPM容器中搜索参数
INSTALL_MONGO
- 将它设置为
true
应该是这样的:workspace: build: context: ./workspace args: - INSTALL_MONGO=true ... php-fpm: build: context: ./php-fpm args: - INSTALL_MONGO=true ...
- 打开
- 重新构建容器
docker-compose build workspace php-fpm
- 使用
docker-compose up
命令运行 MongoDB容器docker-compose up -d mongo
将MongoDB配置添加到
config/database.php
配置文件中'connections' => [ 'mongodb' => [ 'driver' => 'mongodb', 'host' => env('DB_HOST', 'localhost'), 'port' => env('DB_PORT', 27017), 'database' => env('DB_DATABASE', 'database'), 'username' => '', 'password' => '', 'options' => [ 'database' => '', ] ], // ... ],
- 打开你的Laravel
.env
文件并更新以下变量- 设置
DB_HOST
为你的mongo
. - 设置
DB_PORT
为27017
. - 设置
DB_DATABASE
为database
.
- 设置
最后确保你已经通过Composer安装了
jenssegers/mongodb
软件包,并且添加了它的服务提供者composer require jenssegers/mongodb
更多细节请点击这里.
- 测试
- 先让你的Model继承自Mongo Eloquent模型,点击文档
- 进入Workspace容器
- 迁移数据库
php artisan migrate
使用PhpMyAdmin
使用
docker-compose up
命令运行phpMyAdmin容器# use with mysql docker-compose up -d mysql phpmyadmin # use with mariadb docker-compose up -d mariadb phpmyadmin
注意: 在搭配
MariaDB
使用的时候,请修改.env
文件,并设置PMA_DB_ENGINE=mysql
为PMA_DB_ENGINE=mariadb
- 打开浏览器并通过端口8080访问本地主机:
http://localhost:8080
使用Adminer
- 使用
docker-compose up
命令运行Adminer容器,例子:docker-compose up -d adminer
- 打开浏览器并通过端口8080访问本地主机:
http://localhost:8080
注意: 在撰写本文时,我们已将Adminer锁定为4.3.0版本,其中包含阻止PostgreSQL的主要错误如果该错误得到解决(或者您未使用PostgreSQL),请随时设置Adminer到the Dockerfile中的最新版本
使用PgAdmin
- 使用
docker-compose up
命令运行pgAdmin容器,例子:docker-compose up -d postgres pgadmin
- 打开你的浏览器并通过端口5050访问本地主机:
http://localhost:5050
使用Beanstalkd
- 运行Beanstalkd容器
docker-compose up -d beanstalkd
- 通过编辑
config/queue.php
配置文件来配置Laravel以连接到该容器- 首先设置
beanstalkd
为默认队列驱动 - 设置队列主机为beanstalkd:
QUEUE_HOST=beanstalkd
beanstalkd现在可用于默认端口11300
- 首先设置
- 需要使用composer的依赖包pda/pheanstalk 或者,您可以使用Beanstalkd控制台容器从Web界面管理您的队列
- 运行Beanstalkd控制台容器
docker-compose up -d beanstalkd-console
- 打开你的浏览器,访问
http://localhost:2080/
- 添加服务器
Host: beanstalkd Port: 11300
- 运行Beanstalkd控制台容器
- 完成
使用ElasticSearch
- 使用
docker-compose up
命令运行ElasticSearch容器docker-compose up -d elasticsearch
- 打开浏览器并通过端口9200访问本地主机:
http://localhost:9200
默认用户是
user
默认密码是changeme
安装 ElasticSearch 插件
- 安装一个ElasticSearch插件
```bash
docker-compose exec elasticsearch /usr/share/elasticsearch/bin/plugin install {plugin-name}
```
- 重启elasticsearch容器
```bash
docker-compose restart elasticsearch
```
使用Selenium
- 使用
docker-compose up
命令运行Selenium容器docker-compose up -d selenium
- 打开浏览器并通过以下URL 访问端口4444上的本地主机:
http://localhost:4444/wd/hub
使用RethinkDB
RethinkDB是一个开源的实时Web数据库RethinkDB。
Laravel RethinkDB扩展包正在开发中,并且发布了Laravel5.2的released版本
- 使用
docker-compose up
命令运行RethinkDB容器docker-compose up -d rethinkdb
- 通过RethinkDB管理控制台http://localhost:8090/来创建一个叫做
database
的数据库 将RethinkDB配置添加到
config/database.php
配置文件中'connections' => [ 'rethinkdb' => [ 'name' => 'rethinkdb', 'driver' => 'rethinkdb', 'host' => env('DB_HOST', 'rethinkdb'), 'port' => env('DB_PORT', 28015), 'database' => env('DB_DATABASE', 'test'), ] // ... ],
- 打开你的laravel的
.env
文件,并更新以下变量:- 设置
DB_CONNECTION
为rethinkdb
. - 设置
DB_HOST
为rethinkdb
. - 设置
DB_PORT
为28015
. - 设置
DB_DATABASE
为database
.
- 设置
使用Minio
- 配置Minio
- 在Workspace容器中,修改
INSTALL_MC
为true以获取客户端。 - 如果您希望设置正确的密钥,设置
MINIO_ACCESS_KEY
和MINIO_ACCESS_SECRET
- 在Workspace容器中,修改
- 使用
docker-compose up
命令进入Minio容器,例子:docker-compose up -d minio
- 打开浏览器并通过以下URL,访问9000端口上的localhost:
http://localhost:9000
- 通过webui或使用mc客户端创建一个bucket
mc mb minio/bucket
- 在配置其他客户端时使用以下详细信息
S3_HOST=http://minio S3_KEY=access S3_SECRET=secretkey S3_REGION=us-east-1 S3_BUCKET=bucket
使用AWS
- 配置AWS:
- 确保将您的SSH密钥添加到
aws/ssh_keys
文件夹中
- 确保将您的SSH密钥添加到
- 使用
docker-compose up
命令运行Aws容器,栗子:docker-compose up -d aws
- 使用
docker-compose exec aws bash
命令访问aws容器 - 开始在容器内使用eb cli,首先通过执行
eb init
来启动你的项目。阅读aws eb cli文档了解更多详情。
使用Grafana
- 配置Grafana:如果你愿意,你可以使用
GRAFANA_PORT
更改端口,默认端口是3000 - 使用
docker-compose up
命令运行Grafana容器docker-compose up -d grafana
- 打开浏览器并通过以下URL访问端口3000上的本地主机:
http://localhost:3000
- 使用凭证登录User=
admin
,Passwort=admin
。如果需要,请更改Web界面中的密码
安装CodeIgniter
要在Laradock上安装CodeIgniter 3,您只需执行以下简单步骤:
- 打开
docker-compose.yml
文件 - 修改
CODEIGNITER=false
为CODEIGNITER=true
- 重新构建你的PHP-FPM容器
docker-compose build php-fpm
安装Symfony
- 打开
.env
文件,设置WORKSPACE_INSTALL_SYMFONY
为true
。 - 执行完上面的命令,运行
docker-compose build workspace
- NGINX站点包含Symfony项目的默认配置文件
symfony.conf.example
,因此编辑它并确保root它指向您的项目web目录。 - 如果容器已经运行,在上述步骤执行之前先运行
docker-compose restart
- 访问
symfony.test
更改时区
要更改workspace
容器中的时区,请将Docker compose文件中的TZ
构建参数修改为TZ 数据库中的一个 举个栗子, 如果你想设置时区为New York
:
```yml
workspace:
build:
context: ./workspace
args:
- TZ=America/New_York
...
```
我们还建议在laravel项目中设置时区.
添加定时任务
你可以在workspace/crontab/root
中添加定时任务(cron jobs),放在php artisan
这一行后面
```
* * * * * php /var/www/artisan schedule:run >> /dev/null 2>&1
# Custom cron
* * * * * root echo "Every Minute" > /var/log/cron.log 2>&1
```
如果你不想使用默认时区UTC,请更改时区
通过ssh访问工作区
您可以在workspace通过localhost:2222
设置INSTALL_WORKSPACE_SSH
构建参数来访问容器true
。 要更改ssh的默认转发端口
```yml
workspace:
ports:
- "2222:22" # Edit this line
...
```
更改MySQL版本
默认情况下运行的Mysql版本为8.0
Mysql8.0是一个开发版本,您可能更愿意使用最新的稳定版本,或者更旧的版本。如果你愿意,你可以改变使用的MySQL镜像。
打开你的.env文件,设置MYSQL_VERSION
变量为你想要安装的版本。
```
MYSQL_VERSION=5.7
```
可用版本为:5.5,5.6,5.7,8.0或最新版本。有关更多信息,请参阅https://store.docker.com/images/mysql
通过主机访问Mysql
你可以通过确保这些线被添加到转发的MySQL/MariaDB的端口 你可以转发MySQL/MariaDB端口到你的宿主机上通过确保这些关系被添加到docker-compose.yml
或environment specific Compose文件的mysql
或mariadb
部分,或在你的
ports:
- "3306:3306"
使用root访问Mysql
默认的mysql用户的用户名和密码是root和root
- 进入mysql容器
docker-compose exec mysql bash
- 使用root进入mysql
mysql -uroot -proot
,使用非root用户进入mysqlmysql -uhomestead -psecret
- 查看所有用户
SELECT User FROM mysql.user;
- 运行一些命令
show databases
,show tables
,select * from.....
.
创建多个MySQL数据库
Create createdb.sql
from mysql/docker-entrypoint-initdb.d/createdb.sql.example
in mysql/docker-entrypoint-initdb.d/*
and add your SQL syntax as follow:
CREATE DATABASE IF NOT EXISTS `your_db_1` COLLATE 'utf8_general_ci' ;
GRANT ALL ON `your_db_1`.* TO 'mysql_user'@'%' ;
注意: 该数据库创建脚本,只有在 $DATA_PATH_HOST 对应的目录下不存在 mysql 文件夹的前提下,才会随着 mysql 容器的启动而自动运行。反之,如果 $DATA_PATH_HOST 对应的目录下已经存在了 mysql 文件夹,即:$DATA_PATH_HOST/mysql,表示容器已经启动了,在宿主机上生成了容器数据库的挂载。这时想创建额外的数据库,但是此时你又不想删除(要自动运行的前提就必须先删除挂载)已经存在的这个 mysql 挂载,那么,此时你就可以手动执行以下的命令:
docker-compose exec mysql bash
mysql -u root -p < /docker-entrypoint-initdb.d/createdb.sql
再输入密码,刷新数据库连接工具,或者关掉重连,就可以看到新建的数据库。
更改MySQL端口
修改mysql/my.cnf
文件并设置你的端口号, 1234
作为示例
[mysqld]
port=1234
如果你需要从主机访问mysql,请不要忘记更改docker-compose配置问价中的内部转发端口: ("3306:3306"
-> "3306:1234"
)
使用自定义域名代替Docker的ip
假设你的自定义域名是laravel.test
- 打开你的
/etc/hosts
文件,并将你的宿主机地址映射127.0.0.1
到域名laravel.test
,方法是添加一下内容:127.0.0.1 laravel.test
- 打开你的浏览器并访问
{http://laravel.test}
或者,你可以在NGINX配置文件中定义服务器名称,如下所示:server_name laravel.test;
启用全局composer构建安装
在构建容器的过程中启用全局 Composer Install可以让你在完成构建后安装和使用容器中的composer的需求。
- 打开
docker-compose.yml
文件 - 在Workspace容器中搜索
COMPOSER_GLOBAL_INSTALL
参数并设置为true
她应该是在这样的:workspace: build: context: ./workspace args: - COMPOSER_GLOBAL_INSTALL=true ...
- 现在添加你的依赖关系到
workspace/composer.json
- 重新构建Workspace容器
docker-compose build workspace
安装Prestissimo
Prestissimo是composer的一个插件,它可以实现并行安装功能。
- 启用全局composer构建安装
- 在Composer中添加prestissimo作为需要
- 打开
workspace/composer.json
文件 - 添加
"hirak/prestissimo": "^0.3"
作为需要 - 重新构建Workspace容器
docker-compose build workspace
- 打开
安装Node和NVM
在Workspace容器中安装NVM和NodeJs
- 打开
docker-compose.yml
文件 - 在Workspace容器中搜索
INSTALL_NODE
参数并将其设置为true
- 它应该是这样的
workspace: build: context: ./workspace args: - INSTALL_NODE=true ...
- 它应该是这样的
- 重新构建容器
docker-compose build workspace
安装Node和YARN
Yarn是新的JavaScript的包管理器,他比npm快,你可以在here找到他,来将NodeJS和Yarn安装在Workspace容器中:
- 打开
docker-compose.yml
文件 - 在Workspace容器中搜索
INSTALL_NODE
和INSTALL_YARN
参数,并将其设置为true
它应该是这样的:workspace: build: context: ./workspace args: - INSTALL_NODE=true - INSTALL_YARN=true ...
- 重新构建容器
docker-compose build workspace
安装Linuxbrew
Linuxbrew是Linux的包管理器,它是MacOSS的Homebrew的Linux版本,可以在这里找到它。将Linuxbrew安装在Workspace中:
- 打开
docker-compose.yml
文件 - 在Workspace容器中查找
INSTALL_LINUXBREW
参数,并将其设置为true
它应该还是这样的workspace: build: context: ./workspace args: - INSTALL_LINUXBREW=true ...
- 重新构建容器
docker-compose build workspace
常见的Terminal别名
当你启动Docker容器时,Laradock将会赋值位于laradock/workspace
目录中的aliases.sh
文件,并将源文件添加到容器的~/.bashrc
文件中。
你可以任意修改aliases.sh
为你认为合适的,可以个努努你自己的需要添加你自己的别名(或宏函数),
安装Aerospike扩展
- 首先在Workspace和PHP-FPM容器中安装
aerospike
- 打开
docker-compose.yml
文件 - 在Workspace容器中查找
INSTALL_AEROSPIKE
参数 - 将它设置为
true
它应该是这样的:workspace: build: context: ./workspace args: - INSTALL_AEROSPIKE=true ... php-fpm: build: context: ./php-fpm args: - INSTALL_AEROSPIKE=true ...
- 打开
- 重新构建容器
docker-compose build workspace php-fpm
安装Laravel-Envoy
- 打开
docker-compose.yml
文件 - 在Workspace容器中搜索
INSTALL_LARAVEL_ENVOY
参数 - 将它设置为true 它应该是这样的:
workspace: build: context: ./workspace args: - INSTALL_LARAVEL_ENVOY=true ...
- 重新构建容器
docker-compose build workspace
PHPStorm调试指南
远程调试Laravel web和phpunit测试
跟踪你的laradock变化
- Fork the Laradock repository.
- 将该fork作为子模块
- 将所有更改提交给你的fork分支
- 时常从主repository中拉取新的更新
升级Laradock
Moving from Docker Toolbox (VirtualBox) to Docker Native (for Mac/Windows). Requires upgrading Laradock from v3. to v4.:
- 停止所有Docker虚拟机
docker-machine stop {default}
- 安装 Docker Mac or Windows.
- 将Laradock更新到
v4.*.*
(git pull origin master
) - 根据你的需要使用Laradock:
docker-compose up -d nginx mysql
.
Note: 如果你在执行上面的最后一步时遇到任何问题: 重新构建你的容器! docker-compose build --no-cache
"警告:容器数据可能会丢失!"
在MacOS上提高速度
译者注:关于如何在MacOS上提高执行速度的详细指南请参考官方英文文档,该部分文档未做翻译。
在撰写本文档时,Docker在Mac上执行速度很慢,特别是对于大项目这个可能是一个问题,这个问题早于2016年3月。 因为这是一个长期存在的问题,我们将其纳入文档。
因此,与Linux相比,由于osxfs将代码共享到Docker容器的性能非常差,可能有一些解决方法:
译者注:详细解决方法请参考官方英文文档,该部分文档未做翻译。
常见问题
以下列出了您可能遇到的常见问题以及可能的解决方案
看到一个空白页面,而不是Laravel的欢迎
页面
从Laravel根目录运行以下命令:
sudo chmod -R 777 storage bootstrap/cache
看到"Welcome to nginx"而不是Laravel应用程序
在浏览器中使用http://127.0.0.1
代替http://localhost
看到一条错误消息包含address already in use
或者 port is already allocated
确保您尝试运行的服务的端口(22,80,443,3306等)未被主机上的其他程序使用,例如内置apache
/httpd
服务或其他开发工具。
在Windows上收到Nginx错误404 Not Found
- 转到Windows机器上的docker设置
- 点击
Shared Drives
选项卡并检查包含项目文件的驱动器 - 输入你的Windows用户名和密码
- 进入
reset
选项卡,点击重新启动Docker
我的服服务中的时间和当前时间不符
- 确保你已经修改时区时区
- 停止并重新构建容器(
docker-compose up -d --build <services>
)
Mysql拒绝连接
因为你的Laravel应用并未运行在容器的本机IP(127.0.0.1)上,有时会发生这个问题,可以通过以下步骤来解决:
- 选项A
- 通过在你应用程序中的任意位置die dump
Request::ip()
来检查正在运行的Laravel应用的IP,显示的结果是你的Laravel容器的IP。 - 使用上一步你获得的IP更改
env
上的DB_HOST
的变量。
- 通过在你应用程序中的任意位置die dump
- 选项B
- 将
DB_HOST
的值修改为Mysql容器的名字,当前Laradock docker-compose的名称是mysql
- 将
I get stuck when building nginx on fetch http://mirrors.aliyun.com/alpine/v3.5/main/x86_64/APKINDEX.tar.gz
As stated on #749, removing the line RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories
from nginx/Dockerfile
solves the problem.