docker-compose.yml 2.21 KB
version: "3.9"
services:
  rabbitmq:
    image: masstransit/rabbitmq:4.1.3
    container_name: hahrcs_rabbitmq
    ports:
      - 5672:5672
      - 15672:15672
    volumes:
      - rabbitmq_data:/var/lib/rabbitmq
    networks:
      - my-network
      
  redis:
    image: redis:7.2-alpine
    command: /bin/sh -c "redis-server --requirepass hu@Heng_!"
    restart: always
    container_name: hahrcs_redis
    ports:
      - "6379:6379"
    volumes:
      - redis_data:/data
    networks:
      - my-network
  
  postgres:
    image: postgres:15
    container_name: hahrcs_postgres
    volumes:
      - postgres_data:/var/lib/postgresql/data
    environment:
      POSTGRES_DB: hah_rcs
      POSTGRES_USER: sa_user
      POSTGRES_PASSWORD: hu@Heng_!
    ports:
      - "5432:5432"
    networks:
      - my-network
    restart: unless-stopped

  emqx:
    image: emqx/emqx:5.5
    container_name: hahrcs_emqx
    environment:
      # 设置默认用户名和密码(与appsettings.json中的MQTT配置一致)
      EMQX_DASHBOARD__DEFAULT_USERNAME: hahrcs
      EMQX_DASHBOARD__DEFAULT_PASSWORD: hu@Heng_!
      # 配置认证
      EMQX_AUTH__USER__1__USERNAME: hahrcs
      EMQX_AUTH__USER__1__PASSWORD: hu@Heng_!
      # 配置监听器
      EMQX_LISTENERS__TCP__DEFAULT__BIND: "0.0.0.0:1883"
      EMQX_LISTENERS__WS__DEFAULT__BIND: "0.0.0.0:8083"
    ports:
      - "1883:1883"       # MQTT 端口
      - "8083:8083"       # WebSocket 端口
      - "8084:8084"       # WebSocket over SSL 端口
      - "18083:18083"     # Dashboard 管理界面
    volumes:
      - emqx_data:/opt/emqx/data
      - emqx_log:/opt/emqx/log
    networks:
      - my-network
    restart: unless-stopped
    healthcheck:
      test: ["CMD", "emqx", "ping"]
      interval: 30s
      timeout: 10s
      retries: 3

  nginx:
    image: nginx:1.25-alpine
    container_name: hahrcs_nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./html/dist:/usr/share/nginx/html:ro
    networks:
      - my-network
    restart: unless-stopped
    depends_on:
      - postgres
      - rabbitmq
      - redis
      - emqx

      
volumes:
  rabbitmq_data:
  redis_data:
  postgres_data:
  emqx_data:
  emqx_log:
  
networks:
  my-network: