PHP Docker 开发环境

一个完整的PHP开发环境包含多版本PHP、数据库、缓存等服务。

服务列表

服务 端口 版本 说明
Nginx 80 latest Web服务器
PHP 7.1 9000 7.1 PHP-FPM
PHP 7.4 9000 7.4 PHP-FPM
PHP 8.3 9000 8.3 PHP-FPM
MySQL 3306 5.7 数据库
MySQL8 3306 8.0 数据库
Redis 6379 latest 缓存
Python 8000 latest Python环境
Node.js - latest Node.js环境

快速开始

1. 环境变量配置

创建 .env 文件并设置以下变量:

LOCAL_CODE_ROOT=/path/to/your/code  # 本地代码目录
PROJECT_PATH=/path/to/your/project  # 项目路径

2. 启动服务

普通环境:

docker-compose up -d

WSL环境

docker-compose -f docker-compose.yml -f docker-compose.wsl.yml up -d

3. 验证服务

docker-compose ps

使用说明

Nginx配置

  • 配置文件位置:./nginx/conf.d/
  • 参考示例:./nginx/conf.d/example.conf
  • 网站根目录:/var/www/http

PHP版本切换

在Nginx配置中修改 fastcgi_pass 参数:

  • PHP 7.1fastcgi_pass php71:9000;
  • PHP 7.4fastcgi_pass php74:9000;
  • PHP 8.3fastcgi_pass php83:9000;

数据库连接

  • MySQL 5.7mysql:3306,用户名/密码:root/root
  • MySQL 8.0mysql8:3306,用户名/密码:root/root
  • Redisredis:6379

常用命令

查看日志:

docker-compose logs -f [服务名]

进入容器:

docker exec -it [容器名] bash

重启服务:

docker-compose restart [服务名]

停止所有服务:

docker-compose down

故障排除

Laravel权限问题

如果遇到Laravel日志文件权限错误执行以下步骤

  1. 重新构建PHP容器已配置用户ID匹配
docker-compose build php83
docker-compose up -d php83
  1. 设置Laravel目录权限
# 进入PHP容器
docker exec -it php83 bash

# 设置storage和cache目录权限
chown -R www-data:www-data /var/www/mono-be/storage
chown -R www-data:www-data /var/www/mono-be/bootstrap/cache
chmod -R 775 /var/www/mono-be/storage
chmod -R 775 /var/www/mono-be/bootstrap/cache
  1. 或者在宿主机直接设置
# 在WSL中执行
sudo chown -R 1000:1000 /path/to/mono-be/storage
sudo chown -R 1000:1000 /path/to/mono-be/bootstrap/cache
chmod -R 775 /path/to/mono-be/storage
chmod -R 775 /path/to/mono-be/bootstrap/cache

注意事项

  1. 确保本地80、3306、6379端口未被占用
  2. WSL环境需要额外的挂载配置
  3. Xdebug已预配置端口9003
  4. 日志文件保存在 ./log/ 目录
Description
No description provided
Readme 1.6 MiB
Languages
Pip Requirements 100%