From 48007f536d617fceecda550f393030404af9a051 Mon Sep 17 00:00:00 2001 From: KiriAky 107 Date: Tue, 7 Jul 2026 10:07:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0Docker=20Compose=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加完整的Docker Compose编排配置,包含MySQL、Redis、后端服务和前端服务的容器化部署。 配置了数据库初始化脚本挂载、健康检查机制、环境变量配置以及服务间的依赖关系, 实现了完整的药品管理系统的容器化部署方案。 --- docker-compose.yml | 77 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..95f0b6d --- /dev/null +++ b/docker-compose.yml @@ -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: