version: '3.8' # ============================================================ # 碳信网 - 服务编排 # 使用方式: # 单服务启动: docker-compose up -d gateway # 启动所有: docker-compose up -d # ============================================================ services: # ============================================ # 基础设施服务 # ============================================ nacos: image: nacos/nacos-server:v2.3.2 # Nacos 官方镜像,指定稳定版本(避免latest) container_name: txw-nacos # 容器名称,方便管理 ports: - "8848:8848" # Nacos 核心端口(Web控制台+API) - "9848:9848" # Nacos 2.x 新增的客户端通信端口 - "9849:9849" # Nacos 2.x 新增的客户端grpc端口 environment: # 核心配置:单机模式启动(必选) - MODE=standalone # 首选主机模式(单机环境用hostname即可) - PREFER_HOST_MODE=hostname # JVM 内存配置(避免默认内存过大/过小) - JVM_XMS=512m - JVM_XMX=512m - JVM_XMN=256m # 开启鉴权 - NACOS_AUTH_ENABLE=true # 鉴权 Token 密钥(Base64 编码,至少 32 字节) - NACOS_AUTH_TOKEN=TmFjb3NBdXRoVG9rZW5TZWNyZXRLZXkyMDI0Rm9yRGV2RW52aXJvbm1lbnQ= # 服务身份验证密钥 - NACOS_CORE_AUTH_SERVER_IDENTITY_KEY=nacos - NACOS_CORE_AUTH_SERVER_IDENTITY_VALUE=nacos2024 volumes: # 数据持久化:挂载Nacos的数据目录到宿主机 - ./nacos/data:/home/nacos/data # 日志持久化:挂载日志目录到宿主机 - ./nacos/logs:/home/nacos/logs # 配置文件挂载(如需自定义配置,可先从容器拷贝再挂载) # - ./nacos/conf:/home/nacos/conf healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8848/nacos"] interval: 30s timeout: 10s retries: 5 networks: - txw-network redis: image: redis:latest container_name: txw-redis ports: - "6379:6379" command: redis-server --requirepass redis_password volumes: - redis-data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 30s timeout: 10s retries: 5 networks: - txw-network minio: image: minio/minio:latest container_name: txw-minio ports: - "9000:9000" - "9001:9001" environment: - MINIO_ROOT_USER=minioadmin - MINIO_ROOT_PASSWORD=minioadmin123 command: server /data --console-address ":9001" volumes: - minio-data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 10s retries: 5 networks: - txw-network # ============================================ # 业务服务(统一后端镜像) # ============================================ gateway: image: txw-all:1.0.0-BETA container_name: txw-gateway environment: - SERVICE_NAME=gateway - SPRING_PROFILES_ACTIVE=prod - NACOS_SERVER_ADDR=nacos:8848 ports: - "9300:9300" depends_on: nacos: condition: service_healthy redis: condition: service_healthy networks: - txw-network sso: image: txw-all:1.0.0-BETA container_name: txw-sso environment: - SERVICE_NAME=sso - SPRING_PROFILES_ACTIVE=prod - NACOS_SERVER_ADDR=nacos:8848 - SPRING_REDIS_HOST=redis - SPRING_REDIS_PORT=6379 - SPRING_REDIS_PASSWORD=redis_password ports: - "9301:9301" depends_on: nacos: condition: service_healthy redis: condition: service_healthy networks: - txw-network mhzc: image: txw-all:1.0.0-BETA container_name: txw-mhzc environment: - SERVICE_NAME=mhzc - SPRING_PROFILES_ACTIVE=prod - NACOS_SERVER_ADDR=nacos:8848 - SPRING_REDIS_HOST=redis - SPRING_REDIS_PORT=6379 - SPRING_REDIS_PASSWORD=redis_password ports: - "9302:9302" depends_on: nacos: condition: service_healthy redis: condition: service_healthy networks: - txw-network yygl: image: txw-all:1.0.0-BETA container_name: txw-yygl environment: - SERVICE_NAME=yygl - SPRING_PROFILES_ACTIVE=prod - NACOS_SERVER_ADDR=nacos:8848 - SPRING_REDIS_HOST=redis - SPRING_REDIS_PORT=6379 - SPRING_REDIS_PASSWORD=redis_password ports: - "20010:20010" depends_on: nacos: condition: service_healthy redis: condition: service_healthy networks: - txw-network # ============================================ # 前端服务 # ============================================ # ============================================ # 网络和存储卷 # ============================================ networks: txw-network: driver: bridge volumes: nacos-data: redis-data: minio-data: