123 lines
2.7 KiB
Markdown
123 lines
2.7 KiB
Markdown
# 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/` 目录
|