Files
stu_system/docker-compose.yml
2026-09-21 17:39:16 +08:00

67 lines
1.7 KiB
YAML

# ============================================
# 沃林学生管理系统 - Docker 编排
# MySQL 8.0 虚拟镜像 + Backend (FastAPI)
# ============================================
version: "3.9"
services:
# ---------- MySQL 虚拟镜像 ----------
mysql:
image: mysql:8.0
container_name: wolin-sms-mysql
restart: unless-stopped
environment:
# 与 database.py 中的默认凭证保持一致
MYSQL_ROOT_PASSWORD: "123456"
MYSQL_DATABASE: student_manager
TZ: Asia/Shanghai
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --default-authentication-plugin=mysql_native_password
ports:
# 宿主机 3307 -> 容器 3306
# (用 3307 是为了避免与本机已安装的 MySQL 冲突)
- "3308:3306"
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "-uroot", "-p123456"]
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
networks:
- wolin-net
# ---------- 后端应用 ----------
backend:
build:
context: .
dockerfile: Dockerfile
container_name: wolin-sms-backend
restart: unless-stopped
depends_on:
mysql:
condition: service_healthy
environment:
# 容器内通过服务名 mysql 访问数据库(Docker 内置 DNS)
MYSQL_HOST: mysql
MYSQL_PORT: "3306"
MYSQL_USER: root
MYSQL_PASSWORD: "123456"
MYSQL_DB: student_manager
TZ: Asia/Shanghai
ports:
- "8001:8001"
networks:
- wolin-net
networks:
wolin-net:
driver: bridge
volumes:
mysql_data:
driver: local