- 从服务器拉取完整代码 - 按框架规范整理项目结构 - 配置 Drone CI 测试环境部署 - 包含后端(FastAPI)、前端(Vue3)、管理端 技术栈: Vue3 + TypeScript + FastAPI + MySQL
116 lines
3.1 KiB
YAML
116 lines
3.1 KiB
YAML
# 考培练系统 SaaS 超级管理后台 Docker Compose 配置
|
||
#
|
||
# 启动命令:
|
||
# cd /root/aiedu && docker compose -f docker-compose.admin.yml up -d
|
||
#
|
||
# 重新构建后端:
|
||
# docker compose -f docker-compose.admin.yml build --no-cache kaopeilian-admin-backend
|
||
#
|
||
# 服务说明:
|
||
# - kaopeilian-admin-frontend: 管理后台前端 (端口 3030)
|
||
# - kaopeilian-admin-backend: 管理后台后端 (端口 8030)
|
||
#
|
||
# 域名:admin.kpl.ireborn.com.cn
|
||
#
|
||
# 注意:敏感配置从 .env.admin 文件读取
|
||
|
||
name: kaopeilian-admin
|
||
|
||
services:
|
||
# ============================================
|
||
# 管理后台前端
|
||
# ============================================
|
||
kaopeilian-admin-frontend:
|
||
build:
|
||
context: ./kaopeilian-admin-frontend
|
||
dockerfile: Dockerfile
|
||
image: kaopeilian-admin-frontend:1.0.0
|
||
container_name: kaopeilian-admin-frontend
|
||
restart: unless-stopped
|
||
environment:
|
||
- TZ=Asia/Shanghai
|
||
ports:
|
||
- "127.0.0.1:3030:80" # 仅本地访问,通过 Nginx 反向代理
|
||
volumes:
|
||
- /etc/localtime:/etc/localtime:ro
|
||
- /etc/timezone:/etc/timezone:ro
|
||
networks:
|
||
- kaopeilian-network
|
||
depends_on:
|
||
kaopeilian-admin-backend:
|
||
condition: service_started
|
||
healthcheck:
|
||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:80/"]
|
||
interval: 30s
|
||
timeout: 10s
|
||
retries: 3
|
||
start_period: 40s
|
||
logging:
|
||
driver: "json-file"
|
||
options:
|
||
max-size: "10m"
|
||
max-file: "3"
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
cpus: '0.5'
|
||
memory: 256M
|
||
reservations:
|
||
cpus: '0.1'
|
||
memory: 64M
|
||
|
||
# ============================================
|
||
# 管理后台后端(开发环境 - 热重载)
|
||
# ============================================
|
||
kaopeilian-admin-backend:
|
||
build:
|
||
context: ./kaopeilian-backend
|
||
dockerfile: Dockerfile.admin
|
||
image: kaopeilian-admin-backend:1.0.0
|
||
container_name: kaopeilian-admin-backend
|
||
restart: unless-stopped
|
||
env_file:
|
||
- .env.admin
|
||
environment:
|
||
- TZ=Asia/Shanghai
|
||
- PYTHONPATH=/app
|
||
ports:
|
||
- "127.0.0.1:8030:8000" # 仅本地访问,通过 Nginx 反向代理
|
||
volumes:
|
||
# 代码热重载 - 挂载整个 app 目录
|
||
- ./kaopeilian-backend/app:/app/app:rw
|
||
- /etc/localtime:/etc/localtime:ro
|
||
- /etc/timezone:/etc/timezone:ro
|
||
# 开发模式命令 - 启用热重载
|
||
command: ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000", "--reload", "--reload-dir", "/app/app"]
|
||
networks:
|
||
- kaopeilian-network
|
||
- prod-network
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
|
||
interval: 30s
|
||
timeout: 10s
|
||
retries: 5
|
||
start_period: 60s
|
||
logging:
|
||
driver: "json-file"
|
||
options:
|
||
max-size: "10m"
|
||
max-file: "3"
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
cpus: '1'
|
||
memory: 1G
|
||
reservations:
|
||
cpus: '0.25'
|
||
memory: 256M
|
||
|
||
networks:
|
||
kaopeilian-network:
|
||
external: true
|
||
name: kaopeilian-network
|
||
prod-network:
|
||
external: true
|
||
name: prod-network
|