Laradock 是 Docker 的一个完整的PHP开发环境。
- https://laradock.io/
安装配置
clone库
在自定义目录下拉取 laradock 代码
$ git clone https://github.com/Laradock/laradock.git
laradock 和项目目录关系可以同级:
* laradock
* project-1
* project-2
配置文件
这里以配置多个web项目为例进行配置
进入 laradock
目录将 env-example
重命名为 .env
:
$ cp .env.example .env
这个是用于指定你的应用程序的目录,默认是在 Laradock 的上一层:
APP_CODE_PATH_HOST=../
记得最后要以 /
结尾。
构建容器
根据需要构建,如果没有用到 redis 和 phpmyadmin,可以从命令中去掉
$ docker-compose up -d nginx mysql phpmyadmin redis workspace
PHP
修改PHP版本
修改.env配置文件版本
PHP_VERSION=7.3
最后重建镜像
$ docker-compose build php-fpm
修改PHP-CLI版本
修改.env配置文件PHP_VERSION
PHP_VERSION=7.3
最后重建图像,执行php-cli是在workspace镜像的容器中所以需要重新构建workspace
$ docker-compose build workspace
Nginx
站点配置
-
进入nginx配置文件目录:
cd nginx/sites
-
生成该站点的配置文件:
cp laravel.conf.example laradmin.conf
-
配置该文件,相关配置参考nginx的配置:
server_name laradmin.test; # 开头必须是/var/www/,映射.env文件中APPLICATION配置对应的目录 root /var/www/laradmin/public;
-
执行以下命令:
$ docker-compose build nginx $ docker-compose restart nginx
-
修改
/etc/hosts
文件内容:sudo vim /etc/hosts
127.0.0.1 laradmin.test
Mysql
默认情况下使用MySQL 最新版本运行,用户和密码默认都是 root
修改版本
- 修改.env laradock配置文件 MYSQL_VERSION=5.7,具体可用版本见:https://store.docker.com/images/mysql
- 重新编译
docker-compose build mysql
- 如果已经运行则重新启动
docker-compose restart mysql
MacOS M1 buiild 时候如果出现报错:
[+] Building 0.2s (3/3) FINISHED
=> [internal] load build definition from Dockerfile
=> => transferring dockerfile: 32B
=> [internal] load .dockerignore
=> => transferring context: 2B
=> ERROR [internal] load metadata for docker.io/library/mysql:5.7
------
> [internal] load metadata for docker.io/library/mysql:5.7:
------
failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to create LLB definition: no match for platform in manifest sha256:f2ad209efe9c67104167fc609cca6973c8422939491c9345270175a300419f94: not found
可以修改 docker-compose.yml
新增 platform: linux/amd64
配置
### MySQL ################################################
mysql:
build:
context: ./mysql
args:
- MYSQL_VERSION=${MYSQL_VERSION}
environment:
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- TZ=${WORKSPACE_TIMEZONE}
volumes:
- ${DATA_PATH_HOST}/mysql:/var/lib/mysql
- ${MYSQL_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
ports:
- "${MYSQL_PORT}:3306"
networks:
- backend
platform: linux/amd64
其他用法
# 进入 Mysql 容器
$ docker-compose exec mysql bash
# root 登陆
$ mysql -uroot -proot
# 其他用户
$ mysql -udefault -psecret
# 查看日志
$ docker-compose logs mysql
mysql 数据目录:~/.laradock/data/mysql
phpMyAdmin
phpmyadmin
使用该docker-compose up
命令运行phpMyAdmin
$ docker-compose up -d mysql phpmyadmin
打开浏览器并访问端口8080上的localhost : http://localhost:8080
,登录信息如下
host: mysql
user: root
password: root