# LJWX系统 Docker Compose 配置 # 使用 ljwx.env 文件中的配置 version: '3.8' networks: ljwx-network: driver: bridge ipam: config: - subnet: 172.20.0.0/16 services: # MySQL数据库 ljwx-mysql: image: ${REGISTRY}/ljwx-mysql:${MYSQL_VERSION} container_name: ljwx-mysql restart: unless-stopped ports: - "${MYSQL_PORT}:3306" environment: - MYSQL_ROOT_PASSWORD=${MYSQL_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${MYSQL_USERNAME} - MYSQL_PASSWORD=${MYSQL_PASSWORD} - TZ=Asia/Shanghai volumes: - ./data/mysql:/var/lib/mysql - ./config/mysql/my.cnf:/etc/mysql/conf.d/ljwx.cnf - ./logs/mysql:/var/log/mysql networks: ljwx-network: ipv4_address: 172.20.0.2 healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_PASSWORD}"] timeout: 10s retries: 3 interval: 30s start_period: 30s # Redis缓存 ljwx-redis: image: ${REGISTRY}/ljwx-redis:${REDIS_VERSION} container_name: ljwx-redis restart: unless-stopped ports: - "${REDIS_PORT}:6379" environment: - TZ=Asia/Shanghai volumes: - ./data/redis:/data - ./config/redis/redis.conf:/usr/local/etc/redis/redis.conf networks: ljwx-network: ipv4_address: 172.20.0.3 healthcheck: test: ["CMD", "redis-cli", "ping"] timeout: 10s retries: 3 interval: 30s # Spring Boot后端服务 ljwx-boot: image: ${REGISTRY}/ljwx-boot:${BOOT_VERSION} container_name: ljwx-boot restart: unless-stopped ports: - "${BOOT_PORT}:8082" environment: - SPRING_PROFILES_ACTIVE=prod - SERVER_PORT=8082 - MYSQL_HOST=${MYSQL_HOST} - MYSQL_PORT=${MYSQL_PORT} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USERNAME=${MYSQL_USERNAME} - MYSQL_PASSWORD=${MYSQL_PASSWORD} - REDIS_HOST=${REDIS_HOST} - REDIS_PORT=${REDIS_PORT} - TZ=Asia/Shanghai volumes: - ./logs/ljwx-boot:/app/logs networks: ljwx-network: ipv4_address: 172.20.0.4 depends_on: - ljwx-mysql - ljwx-redis healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8082/actuator/health"] timeout: 10s retries: 3 interval: 30s start_period: 60s # Python大屏服务 ljwx-bigscreen: image: ${REGISTRY}/ljwx-bigscreen:${BIGSCREEN_VERSION} container_name: ljwx-bigscreen restart: unless-stopped ports: - "${BIGSCREEN_PORT}:8001" environment: - FLASK_ENV=production - SERVER_PORT=8001 - MYSQL_HOST=${MYSQL_HOST} - MYSQL_PORT=${MYSQL_PORT} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USERNAME=${MYSQL_USERNAME} - MYSQL_PASSWORD=${MYSQL_PASSWORD} - REDIS_HOST=${REDIS_HOST} - REDIS_PORT=${REDIS_PORT} - TZ=Asia/Shanghai volumes: - ./logs/ljwx-bigscreen:/app/logs networks: ljwx-network: ipv4_address: 172.20.0.5 depends_on: - ljwx-mysql - ljwx-redis - ljwx-boot healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8001/health"] timeout: 10s retries: 3 interval: 30s start_period: 60s # Vue.js前端管理界面 ljwx-admin: image: ${REGISTRY}/ljwx-admin:${ADMIN_VERSION} container_name: ljwx-admin restart: unless-stopped ports: - "${ADMIN_PORT}:8080" environment: - NODE_ENV=production - VUE_APP_API_URL=http://ljwx-boot:8082/api - TZ=Asia/Shanghai volumes: - ./logs/nginx:/var/log/nginx networks: ljwx-network: ipv4_address: 172.20.0.6 depends_on: - ljwx-boot healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8080"] timeout: 10s retries: 3 interval: 30s start_period: 30s