First commit
This commit is contained in:
97
docker-compose.yml
Normal file
97
docker-compose.yml
Normal file
@@ -0,0 +1,97 @@
|
||||
# =====================================================================
|
||||
# 实验室预约与资源管理平台 - 一键部署编排
|
||||
#
|
||||
# 启动: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
|
||||
Reference in New Issue
Block a user