sockudo 2.7.2

A simple, fast, and secure WebSocket server for real-time applications.
Documentation
services:
  redis:
    image: redis:7-alpine
    ports:
      - "6380:6380"
    networks:
      - sockudo-test
    healthcheck:
      test: [ "CMD", "redis-cli", "ping" ]
      interval: 5s
      timeout: 3s
      retries: 5

  sockudo-node1:
    build:
      context: ./
      dockerfile: ./test/multinode/Dockerfile.multinode
    volumes:
      - ./target:/app/target:ro
      - ./config:/app/config:ro
    environment:
      - DEBUG=true
      - ADAPTER_DRIVER=redis
      - ADAPTER_REDIS_URL=redis://redis:6380/0
      - ADAPTER_REDIS_PREFIX="test:"
      - ADAPTER_REQUEST_TIMEOUT=3000
      - PORT=6002
      - HOST=0.0.0.0
      - METRICS_ENABLED=true
      - METRICS_PORT=9602
      - APP_MANAGER_DRIVER=memory
      - CACHE_DRIVER=redis
      - QUEUE_DRIVER=redis
      - RATE_LIMITER_DRIVER=redis
      - SHUTDOWN_GRACE_PERIOD=1
      - SSL_ENABLED=true
      - SSL_CERT_PATH=/etc/ssl/certs/sockudo.crt
      - SSL_KEY_PATH=/etc/ssl/private/sockudo.key
    ports:
      - "6002:6002"
      - "9602:9602"
    networks:
      - sockudo-test
    depends_on:
      redis:
        condition: service_healthy
    command: ${SOCKUDO_COMMAND:-/app/target/debug/sockudo}
    stdin_open: true
    tty: true

  sockudo-node2:
    build:
      context: ./
      dockerfile: ./test/multinode/Dockerfile.multinode
    volumes:
      - ./target:/app/target:ro
      - ./config:/app/config:ro
    environment:
      - DEBUG=true
      - ADAPTER_DRIVER=redis
      - ADAPTER_REDIS_URL=redis://redis:6380/0
      - ADAPTER_REDIS_PREFIX="test:"
      - ADAPTER_REQUEST_TIMEOUT=3000
      - PORT=6003
      - HOST=0.0.0.0
      - METRICS_ENABLED=true
      - METRICS_PORT=9603
      - APP_MANAGER_DRIVER=memory
      - CACHE_DRIVER=redis
      - QUEUE_DRIVER=redis
      - RATE_LIMITER_DRIVER=redis
      - SHUTDOWN_GRACE_PERIOD=1
    ports:
      - "6003:6003"
      - "9603:9603"
    networks:
      - sockudo-test
    depends_on:
      redis:
        condition: service_healthy
    command: ${SOCKUDO_COMMAND:-/app/target/debug/sockudo}
    stdin_open: true
    tty: true

  nginx:
    build:
      context: ./
      dockerfile: ./test/multinode/Dockerfile.nginx
    ports:
      - "82:82"
      - "444:444"
    networks:
      - sockudo-test
    depends_on:
      - sockudo-node1
      - sockudo-node2
    volumes:
      - ./test/multinode/nginx-multinode.conf:/etc/nginx/nginx.conf:ro
      - ./test/multinode/client/index.html:/usr/share/nginx/html/client/index.html:ro

networks:
  sockudo-test:
    driver: bridge