Files
3ybactuk-marketplace-go-ser…/docker-compose.yaml
2025-07-28 23:43:47 +03:00

189 lines
5.3 KiB
YAML

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:
- "5438: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:
- "5439: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"