98 lines
3.0 KiB
YAML
98 lines
3.0 KiB
YAML
# =====================================================================
|
||
# 实验室预约与资源管理平台 - 一键部署编排
|
||
#
|
||
# 启动:docker compose up -d --build
|
||
# 访问:前端 http://localhost:${WEB_PORT:-80}
|
||
# 后端 http://localhost:${BACKEND_PORT:-8080}
|
||
# 停止:docker compose down (保留数据库数据卷)
|
||
# docker compose down -v (同时删除数据库数据,首次初始化会重建演示数据)
|
||
#
|
||
# 可通过环境变量覆盖:DB_NAME / DB_USER / DB_PASSWORD / DB_ROOT_PASSWORD /
|
||
# LAB_JWT_SECRET / WEB_PORT / BACKEND_PORT
|
||
# =====================================================================
|
||
|
||
name: lab-reservation
|
||
|
||
services:
|
||
# ---------- 数据库:MariaDB 11 ----------
|
||
mariadb:
|
||
image: mariadb:11.4
|
||
container_name: lab-mariadb
|
||
restart: unless-stopped
|
||
environment:
|
||
MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD:-root123456}
|
||
MARIADB_DATABASE: ${DB_NAME:-lab}
|
||
MARIADB_USER: ${DB_USER:-lab}
|
||
MARIADB_PASSWORD: ${DB_PASSWORD:-lab123456}
|
||
TZ: Asia/Shanghai
|
||
# 统一字符集,保证中文与 emoji 正常存取
|
||
command:
|
||
- --character-set-server=utf8mb4
|
||
- --collation-server=utf8mb4_unicode_ci
|
||
volumes:
|
||
# 数据库数据持久化;首次启动由后端自动建表并写入演示数据
|
||
- mariadb-data:/var/lib/mysql
|
||
# 需要本地客户端连库调试时可打开端口映射
|
||
# ports:
|
||
# - "3306:3306"
|
||
healthcheck:
|
||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 10
|
||
start_period: 20s
|
||
networks:
|
||
- lab-net
|
||
|
||
# ---------- 后端:Spring Boot + MyBatis-Plus ----------
|
||
backend:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile
|
||
image: lab-backend:latest
|
||
container_name: lab-backend
|
||
restart: unless-stopped
|
||
environment:
|
||
# 使用 MariaDB Profile(对应 application-mariadb.yaml)
|
||
SPRING_PROFILES_ACTIVE: mariadb
|
||
DB_HOST: mariadb
|
||
DB_PORT: 3306
|
||
DB_NAME: ${DB_NAME:-lab}
|
||
DB_USER: ${DB_USER:-lab}
|
||
DB_PASSWORD: ${DB_PASSWORD:-lab123456}
|
||
# 生产部署请务必覆盖为随机密钥(长度 >= 32 字节)
|
||
LAB_JWT_SECRET: ${LAB_JWT_SECRET:-lab-reservation-docker-secret-key-change-me-2026}
|
||
TZ: Asia/Shanghai
|
||
JAVA_OPTS: "-Xms256m -Xmx512m"
|
||
depends_on:
|
||
mariadb:
|
||
condition: service_healthy
|
||
ports:
|
||
- "${BACKEND_PORT:-8080}:8080"
|
||
networks:
|
||
- lab-net
|
||
|
||
# ---------- 前端:Nginx + Vue3 静态资源 ----------
|
||
frontend:
|
||
build:
|
||
context: ./frontend
|
||
dockerfile: Dockerfile
|
||
image: lab-frontend:latest
|
||
container_name: lab-frontend
|
||
restart: unless-stopped
|
||
depends_on:
|
||
backend:
|
||
condition: service_healthy
|
||
ports:
|
||
- "${WEB_PORT:-80}:80"
|
||
networks:
|
||
- lab-net
|
||
|
||
volumes:
|
||
# 命名卷保存 MariaDB 数据;docker compose down -v 可连同数据一起清理
|
||
mariadb-data:
|
||
|
||
networks:
|
||
lab-net:
|
||
driver: bridge
|