mirror of
https://github.com/3ybactuk/marketplace-go-service-project.git
synced 2025-10-30 05:53:45 +03:00
122 lines
3.5 KiB
YAML
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
|
|
"
|
|
|