volumes: prometheus_data: {} grafana_data: {} shard1-data: {} shard2-data: {} services: cart: build: context: . dockerfile: cart/Dockerfile ports: - "8080:8080" depends_on: - product-service product-service: image: gitlab-registry.ozon.dev/go/classroom-18/students/homework-draft/products:latest ports: - "8082:8082" loms: build: context: . dockerfile: loms/Dockerfile depends_on: postgres-master: condition: service_started init-kafka: condition: service_completed_successfully ports: - "8083:8083" - "8084:8084" - "8085:8085" notifier: build: context: . dockerfile: notifier/Dockerfile depends_on: init-kafka: condition: service_completed_successfully deploy: replicas: 3 comments: build: context: . dockerfile: comments/Dockerfile depends_on: postgres-comments-shard-1: condition: service_started postgres-comments-shard-2: condition: service_started ports: - "8083:8083" - "8084:8084" - "8085:8085" postgres-master: image: gitlab-registry.ozon.dev/go/classroom-18/students/base/postgres:16 container_name: postgres-master environment: - POSTGRESQL_USERNAME=user - POSTGRESQL_PASSWORD=password - POSTGRESQL_DATABASE=route256 - POSTGRESQL_REPLICATION_MODE=master - POSTGRESQL_REPLICATION_USER=repl_user - POSTGRESQL_REPLICATION_PASSWORD=repl_password - POSTGRESQL_SYNCHRONOUS_COMMIT_MODE=on - POSTGRESQL_NUM_SYNCHRONOUS_REPLICAS=1 ports: - "5433:5432" postgres-replica: image: gitlab-registry.ozon.dev/go/classroom-18/students/base/postgres:16 container_name: postgres-replica depends_on: - postgres-master environment: - POSTGRESQL_DATABASE=route256 - POSTGRESQL_USERNAME=user - POSTGRESQL_PASSWORD=password - POSTGRESQL_REPLICATION_MODE=slave - POSTGRESQL_REPLICATION_USER=repl_user - POSTGRESQL_REPLICATION_PASSWORD=repl_password - POSTGRESQL_MASTER_HOST=postgres-master - POSTGRESQL_MASTER_PORT_NUMBER=5432 - POSTGRESQL_SYNCHRONOUS_COMMIT_MODE=on - POSTGRESQL_NUM_SYNCHRONOUS_REPLICAS=1 ports: - "5434:5432" postgres-comments-shard-1: image: gitlab-registry.ozon.dev/go/classroom-18/students/base/postgres:16 environment: POSTGRES_DB: comments_db POSTGRES_USER: comments-user-1 POSTGRES_PASSWORD: comments-password-1 ports: - "5432:5432" volumes: - shard1-data:/var/lib/postgresql/data postgres-comments-shard-2: image: gitlab-registry.ozon.dev/go/classroom-18/students/base/postgres:16 environment: POSTGRES_DB: comments_db POSTGRES_USER: comments-user-2 POSTGRES_PASSWORD: comments-password-2 ports: - "5432:5432" volumes: - shard2-data:/var/lib/postgresql/data kafka-ui: container_name: kafka-ui image: provectuslabs/kafka-ui:latest ports: - 8095:8080 environment: KAFKA_CLUSTERS_0_NAME: local KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka0:29092 DYNAMIC_CONFIG_ENABLED: "true" kafka0: container_name: kafka image: confluentinc/cp-kafka:7.7.1.arm64 ports: - 9092:9092 expose: - '29092' environment: KAFKA_NODE_ID: 1 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka0:29092,PLAINTEXT_HOST://localhost:9092 KAFKA_LISTENERS: PLAINTEXT://kafka0:29092,CONTROLLER://kafka0:29093,PLAINTEXT_HOST://:9092 KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER" KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka0:29093" KAFKA_PROCESS_ROLES: "broker,controller" KAFKA_LOG_DIRS: "/tmp/kraft-combined-logs" CLUSTER_ID: 'MkU3OEVBNTcwNTJENDM2Qk' init-kafka: image: confluentinc/cp-kafka:7.7.1.arm64 depends_on: - kafka0 entrypoint: [ '/bin/sh', '-c' ] command: | " # blocks until kafka is reachable kafka-topics --bootstrap-server kafka:29092 --list echo -e 'Creating kafka topics' kafka-topics --create --topic loms.order-events --bootstrap-server kafka:29092 --partitions 2 --replication-factor 1 echo -e 'Successfully created the following topics:' kafka-topics --bootstrap-server kafka:29092 --list " prometheus: image: prom/prometheus:latest volumes: - ./prometheus/:/etc/prometheus/ - prometheus_data:/prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/usr/share/prometheus/console_libraries' - '--web.console.templates=/usr/share/prometheus/consoles' ports: - "9090:9090" grafana: image: grafana/grafana:latest volumes: - grafana_data:/var/lib/grafana ports: - "3000:3000" jaeger: image: jaegertracing/all-in-one:latest ports: - "16686:16686" - "4318:4318"