Docker 部署
使用 Docker 容器化部署蝉印诊所管家
前置要求
- Docker >= 20.10
- Docker Compose >= 2.0
- 8GB+ RAM
- 20GB+ 磁盘空间
快速部署
1. 克隆项目
bash
git clone https://GitHub.com/yiliaocrm/api.git
cd api2. 配置环境变量
bash
cp .env.example .env编辑 .env 文件,修改以下配置:
bash
APP_NAME="蝉印诊所管家"
APP_ENV=production
APP_DEBUG=false
APP_URL=http://your-domain.com
DB_CONNECTION=MySQL
DB_HOST=MySQL
DB_PORT=3306
DB_DATABASE=yiliaocrm
DB_USERNAME=root
DB_PASSWORD=your_secure_password
Redis_HOST=Redis
Redis_PASSWORD=null
Redis_PORT=63793. 启动容器
bash
Docker-compose up -d这将启动以下服务:
- app: PHP 8.4 + Laravel 应用
- nginx: Web 服务器
- MySQL: MySQL 8.0 数据库
- Redis: Redis 缓存
4. 初始化数据库
bash
Docker-compose exec app PHP artisan migrate --seed5. 访问系统
打开浏览器访问: http://localhost 或您的域名
默认账号:
- 用户名:
admin - 密码:
admin123
Docker Compose 配置
项目包含完整的 Docker-compose.yml :
yaml
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: yiliaocrm-app
restart: unless-stopped
working_dir: /var/www
volumes:
- ./:/var/www
networks:
- yiliaocrm
nginx:
image: nginx:alpine
container_name: yiliaocrm-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./:/var/www
- ./Docker/nginx:/etc/nginx/conf.d
networks:
- yiliaocrm
MySQL:
image: MySQL:8.0
container_name: yiliaocrm-MySQL
restart: unless-stopped
environment:
MySQL_DATABASE: yiliaocrm
MySQL_ROOT_PASSWORD: your_password
volumes:
- MySQL-data:/var/lib/MySQL
networks:
- yiliaocrm
Redis:
image: Redis:alpine
container_name: yiliaocrm-Redis
restart: unless-stopped
networks:
- yiliaocrm
networks:
yiliaocrm:
driver: bridge
volumes:
MySQL-data:
driver: local常用命令
查看日志
bash
# 查看所有服务日志
Docker-compose logs -f
# 查看特定服务日志
Docker-compose logs -f app
Docker-compose logs -f nginx重启服务
bash
Docker-compose restart停止服务
bash
Docker-compose down执行 Artisan 命令
bash
Docker-compose exec app PHP artisan [command]进入容器
bash
Docker-compose exec app bash生产环境优化
1. 使用 HTTPS
配置 Nginx SSL 证书:
bash
# 将证书文件放到 Docker/nginx/ssl/
Docker-compose restart nginx2. 环境优化
bash
# 缓存配置
Docker-compose exec app PHP artisan config:cache
Docker-compose exec app PHP artisan route:cache
Docker-compose exec app PHP artisan view:cache
# 优化自动加载
Docker-compose exec app composer dump-autoload --optimize3. 数据库备份
bash
# 备份数据库
Docker-compose exec MySQL mysqldump -u root -p yiliaocrm > backup.sql
# 恢复数据库
Docker-compose exec -T MySQL MySQL -u root -p yiliaocrm < backup.sql故障排除
容器启动失败
检查端口占用:
bash
netstat -tuln | grep 80
netstat -tuln | grep 3306权限问题
bash
Docker-compose exec app chown -R www-data:www-data storage bootstrap/cache
Docker-compose exec app chmod -R 775 storage bootstrap/cache数据库连接失败
检查 MySQL 容器状态:
bash
Docker-compose ps MySQL
Docker-compose logs MySQL升级系统
bash
# 1. 拉取最新代码
git pull origin master
# 2. 更新依赖
Docker-compose exec app composer install --no-dev
# 3. 迁移数据库
Docker-compose exec app PHP artisan migrate
# 4. 清除缓存
Docker-compose exec app PHP artisan cache:clear
Docker-compose exec app PHP artisan config:clear
# 5. 重启服务
Docker-compose restart监控和维护
资源使用
bash
Docker stats日志管理
bash
# 限制日志大小
# 在 Docker-compose.yml 中添加:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"