laravel 是 php 常用的开发环境,可以使用 docker-compose 配置好后一键启动。
我们在标准 laravel 项目根目录创建一个 docker-compose 目录,用于存放 docker-compose 配置文件和运行数据。
docker-compose.yml
services:
mysql:
image: mysql:8.0
restart: unless-stopped
volumes:
- "./mysql_data:/var/lib/mysql"
environment:
MYSQL_DATABASE: 'larvael'
MYSQL_ROOT_PASSWORD: '12345678'
php_install:
image: php:8.3-cli
volumes:
- ../:/usr/src/myapp
working_dir: /usr/src/myapp
command: /bin/sh -c "composer install --no-dev && php artisan migrate --force"
depends_on:
- mysql
php:
image: php:8.3
restart: unless-stopped
deploy:
replicas: 2
volumes:
- ../:/app
depends_on:
- mysql
- ssdb
redis:
image: redis:alpine
restart: unless-stopped
memcached:
image: memcached:alpine
restart: unless-stopped
caddy:
image: caddy
restart: unless-stopped
ports:
- "8080:80"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ../:/app
- ./caddy_data:/data
- ./caddy_config:/config
depends_on:
- php
这个配置文件包括php、mysql、redis、memcached、caddy,可以根据情况进行注释。
mysql 版本使用的 8.0 ,php 使用的 8.3,请根据情况自行修改版本号。
mysql的数据保存在 mysql_data 目录,需要迁移的时候直接打包带走就可以。
如果你的 php 需要一些特色的扩展,可能需要自己重新打包 php 镜像。
注意需要添加一个 .gitignore 文件,避免 git 跟踪 MySQL的数据文件变动。
.gitignore
caddy_config
caddy_data
mysql_data
php_install 容器用于安装 php 依赖,执行迁移,更新代码后,只需要重启这个容器即可。
注意这里我们使用的 Caddy 而不是 nginx,Caddy 比较简单,如果没有比较复杂的要求,用 Caddy 即可。
Caddyfile
:80 {
root * /app/public
@static {
file
path *.ico *.css *.js *.gif *.jpg *.jpeg *.png *.svg *.woff *.woff2 *.webp
}
header @static Cache-Control max-age=31536000
encode gzip
php_fastcgi php:9000
file_server
}
cd 到 docker-compose ,然后 docker-compose up -d
,访问端口 8080 即可。