# 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` 文件并设置以下变量: ```bash LOCAL_CODE_ROOT=/path/to/your/code # 本地代码目录 PROJECT_PATH=/path/to/your/project # 项目路径 ``` ### 2. 启动服务 **普通环境:** ```bash docker-compose up -d ``` **WSL环境:** ```bash docker-compose -f docker-compose.yml -f docker-compose.wsl.yml up -d ``` ### 3. 验证服务 ```bash docker-compose ps ``` ## 使用说明 ### Nginx配置 - 配置文件位置:`./nginx/conf.d/` - 参考示例:`./nginx/conf.d/example.conf` - 网站根目录:`/var/www/http` ### PHP版本切换 在Nginx配置中修改 `fastcgi_pass` 参数: - PHP 7.1:`fastcgi_pass php71:9000;` - PHP 7.4:`fastcgi_pass php74:9000;` - PHP 8.3:`fastcgi_pass php83:9000;` ### 数据库连接 - **MySQL 5.7**:`mysql:3306`,用户名/密码:`root/root` - **MySQL 8.0**:`mysql8:3306`,用户名/密码:`root/root` - **Redis**:`redis:6379` ### 常用命令 **查看日志:** ```bash docker-compose logs -f [服务名] ``` **进入容器:** ```bash docker exec -it [容器名] bash ``` **重启服务:** ```bash docker-compose restart [服务名] ``` **停止所有服务:** ```bash docker-compose down ``` ## 故障排除 ### Laravel权限问题 如果遇到Laravel日志文件权限错误,执行以下步骤: 1. **重新构建PHP容器**(已配置用户ID匹配): ```bash docker-compose build php83 docker-compose up -d php83 ``` 2. **设置Laravel目录权限**: ```bash # 进入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 ``` 3. **或者在宿主机直接设置**: ```bash # 在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/` 目录