services: server: build: context: ./server dockerfile: Dockerfile image: admin-xy-server:latest container_name: admin-xy-server ports: - "9010:9010" environment: SPRING_PROFILES_ACTIVE: prod JWT_SECRET: ${JWT_SECRET:-change-me-in-production-32bytes-min-secret-key-please} SPRING_DATASOURCE_ADMIN_URL: ${SPRING_DATASOURCE_ADMIN_URL} SPRING_DATASOURCE_ADMIN_USERNAME: ${SPRING_DATASOURCE_ADMIN_USERNAME} SPRING_DATASOURCE_ADMIN_PASSWORD: ${SPRING_DATASOURCE_ADMIN_PASSWORD} # 日志目录(logback-spring.xml 读 ${LOG_DIR}) ADMINXY_LOG_DIR: /app/logs volumes: # 生产日志持久化到宿主机 - ${ADMINXY_LOG_HOST_DIR:-/opt/admin-xy/logs}:/app/logs healthcheck: test: ["CMD-SHELL", "wget -qO- http://localhost:9010/actuator/health 2>/dev/null | grep -q '\"status\":\"UP\"' || exit 1"] interval: 10s timeout: 5s retries: 6 start_period: 30s restart: unless-stopped networks: - admin-xy-net web: build: context: ./web dockerfile: Dockerfile image: admin-xy-web:latest container_name: admin-xy-web ports: - "9001:9001" depends_on: server: condition: service_healthy restart: unless-stopped networks: - admin-xy-net networks: admin-xy-net: driver: bridge