version: '3.9' services: redis-node-1: build: context: ./redis container_name: redis-node-1 hostname: redis-node-1 networks: - redis-cluster-net volumes: - ./redis/dockerdata/redis-node-1:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 redis-node-2: build: context: ./redis container_name: redis-node-2 hostname: redis-node-2 networks: - redis-cluster-net volumes: - ./redis/dockerdata/redis-node-2:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 redis-node-3: build: context: ./redis container_name: redis-node-3 hostname: redis-node-3 networks: - redis-cluster-net volumes: - ./redis/dockerdata/redis-node-3:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 3s retries: 5 node-app: build: context: . container_name: node-app networks: - redis-cluster-net env_file: - .env.development depends_on: redis-node-1: condition: service_healthy redis-node-2: condition: service_healthy redis-node-3: condition: service_healthy ports: - "4000:4000" volumes: - .:/app - /app/node_modules # Prevents overwriting node_modules socketio-admin-ui: image: maitrungduc1410/socket.io-admin-ui container_name: socketio-admin-ui networks: - redis-cluster-net ports: - "3333:80" networks: redis-cluster-net: driver: bridge