添加Docker Compose配置文件

添加完整的Docker Compose编排配置,包含MySQL、Redis、后端服务和前端服务的容器化部署。
配置了数据库初始化脚本挂载、健康检查机制、环境变量配置以及服务间的依赖关系,
实现了完整的药品管理系统的容器化部署方案。
This commit is contained in:
2026-07-07 10:07:58 +08:00
parent 3b1b70d571
commit 48007f536d

77
docker-compose.yml Normal file
View File

@@ -0,0 +1,77 @@
# ============================================================
# 药品管理系统 — Docker Compose 编排
# 启动: docker-compose up -d
# ============================================================
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: medicine-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD:-root}
MYSQL_DATABASE: ${DB_NAME:-medicine_manager}
TZ: Asia/Shanghai
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
- ./backend/src/main/resources/database/init.sql:/docker-entrypoint-initdb.d/init.sql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: redis:7-alpine
container_name: medicine-redis
restart: unless-stopped
ports:
- "6379:6379"
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: medicine-backend
restart: unless-stopped
depends_on:
mysql:
condition: service_healthy
environment:
DB_HOST: mysql
DB_PORT: 3306
DB_NAME: ${DB_NAME:-medicine_manager}
DB_USERNAME: root
DB_PASSWORD: ${DB_PASSWORD:-root}
JWT_SECRET: ${JWT_SECRET}
SERVER_PORT: 8080
SPRING_DATA_REDIS_HOST: redis
SPRING_DATA_REDIS_PORT: 6379
ports:
- "8080:8080"
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: medicine-frontend
restart: unless-stopped
depends_on:
- backend
ports:
- "80:80"
volumes:
mysql_data:
redis_data: