services: postgres: image: postgres:16.3-alpine container_name: "ohmychat-postgres" hostname: "ohmychat-postgres" ports: - "5432:5432" volumes: - dbdata:/var/lib/postgresql/data env_file: - ./config/postgres/.env init: true kafka-1: image: confluentinc/cp-kafka:latest container_name: kafka-1 hostname: kafka-1 ports: - "9092:9092" environment: KAFKA_NODE_ID: 1 KAFKA_PROCESS_ROLES: broker,controller KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-1:29092,PLAINTEXT_HOST://localhost:9092 KAFKA_LISTENERS: PLAINTEXT://kafka-1:29092,PLAINTEXT_HOST://0.0.0.0:9092,CONTROLLER://kafka-1:29093 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:29093,2@kafka-2:29093 KAFKA_LOG_DIRS: /var/lib/kafka/data KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2 KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 CLUSTER_ID: NeEcW4ddRIWWZOxkgFaC4w init: true # https://docs.confluent.io/platform/current/multi-dc-deployments/multi-region.html # KAFKA_REPLICA_SELECTOR_CLASS: org.apache.kafka.common.replica.RackAwareReplicaSelector # KAFKA_BROKER_RACK: rack-1 kafka-2: image: confluentinc/cp-kafka:latest container_name: kafka-2 hostname: kafka-2 ports: - "9093:9092" environment: KAFKA_NODE_ID: 2 KAFKA_PROCESS_ROLES: broker,controller KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-2:29092,PLAINTEXT_HOST://localhost:9093 KAFKA_LISTENERS: PLAINTEXT://kafka-2:29092,PLAINTEXT_HOST://0.0.0.0:9092,CONTROLLER://kafka-2:29093 KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka-1:29093,2@kafka-2:29093 KAFKA_LOG_DIRS: /var/lib/kafka/data KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 2 KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0 CLUSTER_ID: NeEcW4ddRIWWZOxkgFaC4w init: true scylla-1: image: scylladb/scylla:latest container_name: scylla-1 hostname: scylla-1 volumes: - "./config/scylla/scylla.yaml:/etc/scylla/scylla.yaml" - "./config/scylla/cassandra-rackdc.properties.dc1.rack1:/etc/scylla/cassandra-rackdc.properties" ports: - "9042:9042" command: --seeds=scylla-1,scylla-2 --smp 2 scylla-2: image: scylladb/scylla:latest container_name: scylla-2 hostname: scylla-2 volumes: - "./config/scylla/scylla.yaml:/etc/scylla/scylla.yaml" - "./config/scylla/cassandra-rackdc.properties.dc1.rack2:/etc/scylla/cassandra-rackdc.properties" ports: - "9043:9042" command: --seeds=scylla-1,scylla-2 --smp 2 depends_on: - scylla-1 volumes: dbdata: