version: "3"
services:
web:
build: .
container_name: esrs_web
volumes:
- .:/code
- "app:/home/app/"
- "~/.ssh:/home/app/.ssh"
- "~/.aws:/home/app/.aws"
- "~/.gitconfig:/home/app/.gitconfig"
- "~/.gitignore:/home/app/.gitignore"
working_dir: /code
depends_on:
- postgres
- rabbit
- zookeeper
- kafka
environment:
BUILD_ENV: dev
CARGO_HOME: /home/app/.cargo
CARGO_TARGET_DIR: /home/app/target
CARGO_MAKE_DISABLE_UPDATE_CHECK: 1
networks:
- default
postgres:
image: public.ecr.aws/bitnami/postgresql:11
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: postgres
POSTGRES_USER: postgres
rabbit:
image: rabbitmq:3.7.4-management
ports:
- "15676:15672"
- "5676:5672"
environment:
RABBITMQ_DEFAULT_VHOST: rabbit
RABBITMQ_DEFAULT_USER: rabbit
RABBITMQ_DEFAULT_PASS: rabbit
zookeeper:
container_name: zookeeper
image: public.ecr.aws/prima/zookeeper:7.3.0-1
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
KAFKA_OPTS: "-Dzookeeper.4lw.commands.whitelist=ruok"
ports:
- "2181:2181"
healthcheck:
test: "[ $$(echo ruok | nc localhost 2181 ) == imok ]"
interval: 1s
timeout: 10s
retries: 100
kafka:
container_name: kafka
image: public.ecr.aws/prima/kafka:7.3.0-1
depends_on:
zookeeper:
condition: service_healthy
ports:
- "9092:9092"
- "9997:9997"
- "29092:29092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT_HOST://host.docker.internal:29092, PLAINTEXT://kafka:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_CONFLUENT_REPORTERS_TELEMETRY_AUTO_ENABLE: "false"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_DEFAULT_REPLICATION_FACTOR: 1
KAFKA_CONFLUENT_LICENSE_TOPIC_REPLICATION_FACTOR: 1
healthcheck:
test: [ "CMD", "kafka-topics", "--bootstrap-server", "kafka:9092", "--list" ]
interval: 1s
timeout: 10s
retries: 100
volumes:
app: