Files
stu_teacher/docker-compose.yml

58 lines
1.4 KiB
YAML

services:
mysql:
image: mysql:8.0
container_name: walin-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: root123456
MYSQL_DATABASE: walin_db
TZ: Asia/Shanghai
volumes:
- mysql_data:/var/lib/mysql
# 容器首次启动时自动执行建表 + 种子数据脚本
- ./sql/init.sql:/docker-entrypoint-initdb.d/init.sql:ro
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-proot123456"]
interval: 5s
timeout: 3s
retries: 20
networks:
- walin-net
api:
build: .
container_name: walin-api
restart: unless-stopped
environment:
# 注意:api 容器内通过服务名 mysql 访问数据库
DATABASE_URL: mysql+pymysql://root:root123456@mysql:3306/walin_db?charset=utf8mb4
SECRET_KEY: change_me_to_a_long_random_string_in_production
DB_ECHO: "false"
DEBUG: "false"
depends_on:
mysql:
condition: service_healthy
networks:
- walin-net
nginx:
image: nginx:1.25-alpine
container_name: walin-nginx
restart: unless-stopped
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- api
networks:
- walin-net
volumes:
mysql_data:
networks:
walin-net:
driver: bridge