说明
本文不是Docker入门教程, 而是Laradock的入门教程, 使用Laradock可以方便高效地搭建兼容各平台的PHP开发环境.
上手Laradock需要一些Docker基础, 得知道Dockerfile
文件和docker-compsoe.yml
文件是干嘛用的
要解决的问题
- Laradock中启动Nginx、MySQL、PHP、Redis服务运行一个全新的Laravel项目
- 一个Laradock运行多个项目
- 后期切换MySQL、PHP版本
- 添加PHP扩展
操作环境
- 主机: macOS 10.15
- Docker Desktop community: 2.2.0 (Engin: 19.03) (已配置阿里的docker镜像加速)
- Composer: 1.9
- Git: 2.23
一些约定
- 下文用到的主机命令别名:
alias dr="docker "
、alias ds="docker-compose "
, 即docker
简写成dr
- 下面演示中的Laradock和Laravel代码都放置在
~/_code/
目录下
安装
Laradock默认是给单一项目搭建环境的, 但也可以设置成支持多项目的, 区别在于Laradock目录与项目目录的相对位置.
例如我的全部项目代码都是放置在~/_code/
目录下的, 项目1的目录是~/_code/project_1/
, 项目2的目录是~/_code/project_2/
如此类推.
那多项目模式的Laradock目录结构如下:
~/_code/
laradock/
project_1/
project_2/
单项目模式(也就是将laradock作为一个项目的子项目):
~/_code/
project_3/
laradock/
项目3的其它目录/
多项目模式对于运行多个对环境无特别要求的项目的情况比较方便; 单项目模式对于专门给个别项目适配特定的服务比较有针对性, 同时还可以把laradock作为子项目一并提交到版本管理, 当需要在别处部署项目的时候代码和执行环境可以一步到位, 特别方便.
因此, 我个人建议是这两种模式可以根据面临的情况选择使用, 先搭一套多项目模式的, 一般情况就这个就够了, 然后其它情况特殊的就用单项目模式的. 下面我以多项目模式来演示.
下载
cd ~/_code/
git clone https://github.com/Laradock/laradock.git
配置
# 演示的Laradock目录在 `~/_code/laradock/`
cd laradock/
cp env-example .env
修改.env
如下:
# 下面开始的是重点!
# 指定要挂载进容器的目录,也就是项目代码在主机的目录
APP_CODE_PATH_HOST=../
# 将`APP_CODE_PATH_HOST`指定的目录挂载进到容器(如workspack、php-fpm容器)内相应哪个位置
APP_CODE_PATH_CONTAINER=/var/www
# MySQL,Redis等数据持久化保存在主机的什么位置,可以自定义目录的
DATA_PATH_HOST=~/.laradock/general_data
# 给这个laralock(docker-compose)项目取个名字,这个名字将会作为未来启动的容器的命名前缀,不能与其它laradock重名.默认是`laradock`,当然也可以设置成`aaa`
COMPOSE_PROJECT_NAME=general
# php-cli和php-fpm的版本,目前可选填: 7.4 - 7.3 - 7.2 - 7.1 - 7.0 - 5.6
PHP_VERSION=7.3
# MySQL的版本,latest是最新版8.0.x,写5.7会给你安装5.7.x的最新版
MYSQL_VERSION=5.7
# 在国内网络环境下加快容器内的一些下载,默认采用阿里的镜像
CHANGE_SOURCE=true
# 设置时区,会影响到所有运行的容器,PRC是指中国
WORKSPACE_TIMEZONE=PRC
# 下面开始的是看情况有选择地操作:
# 设置composer镜像
WORKSPACE_COMPOSER_REPO_PACKAGIST=