Files
3ybactuk-marketplace-go-ser…/docker-compose.yaml
2025-07-17 19:20:27 +00:00

122 lines
3.5 KiB
YAML

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
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"
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
"