67 lines
1.7 KiB
YAML
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
|