Skip to content

Docker 部署

环境要求

  • Docker 20.10+
  • Docker Compose 2.0+
bash
docker --version
docker compose version

快速启动

bash
# 1. 克隆项目
git clone https://github.com/yuandianxitong/ydadmin.git
cd ydadmin

# 2. 配置环境变量
cp server/.env.example server/.env

编辑 server/.env,修改以下配置:

ini
[DB]
HOST = mysql          # Docker 容器服务名
NAME = yd_admin
USER = root
PASS = your_password  # 与 docker-compose.yml 中一致

[CACHE]
DRIVER = redis

[REDIS]
HOST = redis          # Docker 容器服务名

[QUEUE]
CONNECTOR = redis
bash
# 3. 启动所有服务
docker compose up -d

# 4. 安装后端依赖
docker compose exec php composer install

# 5. 访问安装向导完成初始化
# http://localhost:8000/install/

docker-compose.yml 配置详解

yaml
services:
  nginx:
    image: nginx:alpine
    ports:
      - "8000:80"                    # 主机端口:容器端口
    volumes:
      - ./server:/var/www/html       # 挂载后端代码
      - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

  php:
    build: ./docker/php              # 自定义 PHP 镜像(含扩展)
    volumes:
      - ./server:/var/www/html
    depends_on:
      - mysql
      - redis

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: your_password
      MYSQL_DATABASE: yd_admin
    volumes:
      - mysql_data:/var/lib/mysql    # 数据持久化
    ports:
      - "3306:3306"                  # 可选,调试用

  redis:
    image: redis:7-alpine
    volumes:
      - redis_data:/data             # 数据持久化

volumes:
  mysql_data:
  redis_data:

数据持久化

MySQL 和 Redis 数据通过 Docker volumes 持久化,删除容器不会丢失数据。

查看 volumes:

bash
docker volume ls

备份 MySQL 数据:

bash
docker compose exec mysql mysqldump -u root -p yd_admin > backup.sql

自定义配置

修改端口

编辑 docker-compose.yml 中 nginx 的 ports 映射。

使用 HTTPS

在 nginx 配置中添加 SSL 证书路径,并将证书文件挂载到容器中。

更新与重新部署

bash
# 拉取最新代码
git pull

# 重新构建并启动
docker compose up -d --build

# 更新依赖
docker compose exec php composer install

# 清除缓存
docker compose exec php php think clear

# 如有数据库升级脚本
docker compose exec mysql mysql -u root -p yd_admin < server/database/updates/vX.Y.Z/update.sql

查看日志

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

# 查看指定服务日志
docker compose logs -f php
docker compose logs -f nginx

基于 MIT 许可发布