version: '3.8' services: app: build: . # 强制使用当前代码构建镜像 image: zhengdushi/chatroom:latest container_name: chatroom-app ports: - "2779:2779" environment: - PORT=2779 - RABBITMQ_HOST=rabbitmq - RABBITMQ_USER=admin - RABBITMQ_PASS=1218Zhengyaqi - RABBITMQ_URL=amqp://admin:1218Zhengyaqi@rabbitmq:5672/ - REDIS_ADDR=redis:6379 # 确保环境变量正确传递 depends_on: rabbitmq: condition: service_healthy # 等待 RabbitMQ 健康 redis: condition: service_healthy # 等待 Redis 健康 restart: unless-stopped networks: - chatroom-net rabbitmq: image: rabbitmq:3-management-alpine container_name: chatroom-rabbitmq ports: - "5672:5672" - "15672:15672" environment: RABBITMQ_DEFAULT_USER: admin RABBITMQ_DEFAULT_PASS: 1218Zhengyaqi # ← 必须和上面一致! healthcheck: test: ["CMD", "rabbitmq-diagnostics", "-q", "check_running"] interval: 10s timeout: 5s retries: 5 volumes: - rabbitmq_data:/var/lib/rabbitmq restart: unless-stopped networks: - chatroom-net redis: image: redis:alpine container_name: chatroom-redis ports: - "6379:6379" volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 restart: unless-stopped networks: - chatroom-net networks: chatroom-net: driver: bridge volumes: rabbitmq_data: redis_data: