services: # ------------------------- # LEADER NODE # ------------------------- leader: build: . container_name: uptop-leader ports: - "23234:23234" # SSH - "8080:8080" # HTTP environment: - UPTOP_DB_TYPE=postgres # Note: Port 5432 is correct here because we are talking INSIDE the network - UPTOP_DB_DSN=postgres://devuser:devpass@leader-db:5432/uptop_dev?sslmode=disable - UPTOP_HTTP_PORT=8080 - UPTOP_STATUS_ENABLED=true - UPTOP_STATUS_TITLE=Leader Node # Cluster Config - UPTOP_CLUSTER_MODE=leader - UPTOP_CLUSTER_SECRET=mysecret depends_on: - leader-db stdin_open: true tty: true leader-db: image: postgres:15-alpine container_name: uptop-leader-db environment: POSTGRES_USER: devuser POSTGRES_PASSWORD: devpass POSTGRES_DB: uptop_dev volumes: - ./tmp/leader-data:/var/lib/postgresql/data # ------------------------- # FOLLOWER NODE # ------------------------- follower: build: . container_name: uptop-follower ports: - "23233:23234" # SSH (Mapped to different host port) - "8081:8080" # HTTP (Mapped to different host port) environment: - UPTOP_DB_TYPE=postgres # Connects to its OWN database - UPTOP_DB_DSN=postgres://devuser:devpass@follower-db:5432/uptop_dev?sslmode=disable - UPTOP_HTTP_PORT=8080 - UPTOP_STATUS_ENABLED=true - UPTOP_STATUS_TITLE=Follower Node # Cluster Config - UPTOP_CLUSTER_MODE=follower - UPTOP_CLUSTER_SECRET=mysecret # IMPORTANT: Uses the Service Name "leader" to connect internally - UPTOP_PEER_URL=http://leader:8080 depends_on: - follower-db stdin_open: true tty: true follower-db: image: postgres:15-alpine container_name: uptop-follower-db environment: POSTGRES_USER: devuser POSTGRES_PASSWORD: devpass POSTGRES_DB: uptop_dev volumes: - ./tmp/follower-data:/var/lib/postgresql/data