# 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 ```