services: # Citus Coordinator Node postgres-citus-coordinator: image: citusdata/citus:12.1 platform: linux/amd64 container_name: alga_citus_coordinator environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_DB: server_test CITUS_NODE_TYPE: coordinator ports: - "5433:5432" volumes: - citus_coordinator_data:/var/lib/postgresql/data command: | postgres -c shared_preload_libraries='citus,pg_stat_statements' -c citus.shard_count=32 -c citus.shard_replication_factor=1 -c log_statement='all' -c log_duration=on networks: - alga_test_network healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 # Citus Worker Node 1 postgres-citus-worker-1: image: citusdata/citus:12.1 platform: linux/amd64 container_name: alga_citus_worker_1 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_DB: server_test CITUS_NODE_TYPE: worker volumes: - citus_worker1_data:/var/lib/postgresql/data command: | postgres -c shared_preload_libraries='citus,pg_stat_statements' networks: - alga_test_network depends_on: postgres-citus-coordinator: condition: service_healthy # Citus Worker Node 2 postgres-citus-worker-2: image: citusdata/citus:12.1 platform: linux/amd64 container_name: alga_citus_worker_2 environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_DB: server_test CITUS_NODE_TYPE: worker volumes: - citus_worker2_data:/var/lib/postgresql/data command: | postgres -c shared_preload_libraries='citus,pg_stat_statements' networks: - alga_test_network depends_on: postgres-citus-coordinator: condition: service_healthy # Setup service to configure Citus cluster citus-setup: image: citusdata/citus:12.1 platform: linux/amd64 container_name: alga_citus_setup depends_on: postgres-citus-coordinator: condition: service_healthy postgres-citus-worker-1: condition: service_started postgres-citus-worker-2: condition: service_started environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} PGPASSWORD: ${POSTGRES_PASSWORD:-postgres} networks: - alga_test_network command: | bash -c " echo 'Waiting for workers to be ready...' sleep 10 echo 'Adding worker nodes to coordinator...' psql -h postgres-citus-coordinator -U postgres -d server_test -c \"SELECT citus_add_node('postgres-citus-worker-1', 5432);\" || true psql -h postgres-citus-coordinator -U postgres -d server_test -c \"SELECT citus_add_node('postgres-citus-worker-2', 5432);\" || true echo 'Verifying cluster setup...' psql -h postgres-citus-coordinator -U postgres -d server_test -c \"SELECT * FROM citus_get_active_worker_nodes();\" echo 'Citus cluster setup complete!' " volumes: citus_coordinator_data: citus_worker1_data: citus_worker2_data: networks: alga_test_network: driver: bridge