# Docker 部署说明

本项目使用 `webdevops/php-nginx:7.2-alpine` 作为基础镜像。

## 文件说明

- `Dockerfile` - Docker 镜像构建文件
- `docker-compose.yml` - Docker Compose 编排文件
- `.dockerignore` - Docker 构建忽略文件
- `docker/nginx/vhost.conf` - Nginx 虚拟主机配置

## 快速启动

### 1. 安装依赖（首次部署）

在启动 Docker 之前，需要先在宿主机上安装 Composer 依赖：

```bash
composer install
```

### 2. 启动服务

```bash
docker-compose up -d
```

### 3. 查看服务状态

```bash
docker-compose ps
```

### 4. 查看日志

```bash
# 查看所有服务日志
docker-compose logs -f

# 查看 web 服务日志
docker-compose logs -f web

# 查看 MySQL 日志
docker-compose logs -f mysql
```

## 服务信息

### Web 服务
- 访问地址: http://localhost:8080
- 容器名称: weipan_web
- PHP 版本: 7.2
- Web 服务器: Nginx

### MySQL 服务
- 主机: mysql (容器内) / localhost:3306 (宿主机)
- 数据库: weipan
- 用户名: weipan
- 密码: weipan123
- Root 密码: root

## 配置说明

### PHP 配置
- 内存限制: 256M
- 执行时间: 300秒
- POST 大小: 50M
- 上传文件大小: 50M

### 数据库配置

修改 `config/database.php` 中的数据库连接信息：

```php
'hostname' => 'mysql',  // Docker 容器内使用服务名
'database' => 'weipan',
'username' => 'weipan',
'password' => 'weipan123',
```

## 常用命令

### 停止服务

```bash
docker-compose stop
```

### 重启服务

```bash
docker-compose restart
```

### 停止并删除容器

```bash
docker-compose down
```

### 停止并删除容器和数据卷

```bash
docker-compose down -v
```

### 重新构建镜像

```bash
docker-compose build --no-cache
docker-compose up -d
```

### 进入容器

```bash
# 进入 web 容器
docker-compose exec web sh

# 进入 MySQL 容器
docker-compose exec mysql bash
```

### 清理缓存

```bash
docker-compose exec web php think clear
```

## 目录权限

如果遇到权限问题，可以在容器内执行：

```bash
docker-compose exec web chown -R application:application /app
docker-compose exec web chmod -R 777 /app/runtime
```

## 生产环境建议

1. 修改 MySQL 密码为强密码
2. 调整 `docker-compose.yml` 中的端口映射
3. 设置合适的环境变量
4. 配置数据卷备份策略
5. 启用 HTTPS
6. 配置防火墙规则

## 故障排查

### 查看容器日志

```bash
docker-compose logs -f web
```

### 检查容器状态

```bash
docker-compose ps
```

### 测试数据库连接

```bash
docker-compose exec mysql mysql -uweipan -pweipan123 weipan
```

### 重置权限

```bash
docker-compose exec web chown -R application:application /app
docker-compose exec web chmod -R 755 /app
docker-compose exec web chmod -R 777 /app/runtime
```
