Skip to content

Docker 部署

使用 Docker 容器化部署蝉印诊所管家

前置要求

  • Docker >= 20.10
  • Docker Compose >= 2.0
  • 8GB+ RAM
  • 20GB+ 磁盘空间

快速部署

1. 克隆项目

bash
git clone https://GitHub.com/yiliaocrm/api.git
cd api

2. 配置环境变量

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=6379

3. 启动容器

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 --seed

5. 访问系统

打开浏览器访问: 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 nginx

2. 环境优化

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 --optimize

3. 数据库备份

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"

获取帮助