-
Notifications
You must be signed in to change notification settings - Fork 0
/
docker-compose.yml
105 lines (93 loc) · 3.1 KB
/
docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
version: "3.8"
services:
fake-confluent-cloud:
build: ./fake_dependencies/confluent-cloud
ports:
- 5051:8080
database:
image: postgres:latest
ports:
- 5432:5432
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=p
pgup:
build: ./db
depends_on:
- database
# volumes:
# - ${PWD}/db/export:/tmp
environment:
# - DEBUG=1 # enable script debugging
- LOCAL_DEVELOPMENT=1 # will CREATE DATABASE ${PGDATABASE} every time
- PGDATABASE=db # database name
- PGHOST=database # docker compose service name
- PGUSER=postgres # same as above
- PGPASSWORD=p # same as above
- PGSSLMODE=disable # ignore SSLMODE for local development
zookeeper:
image: confluentinc/cp-zookeeper:7.0.0
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
kafka:
image: confluentinc/cp-kafka:7.0.0
depends_on:
- zookeeper
ports:
- 9092:9092
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://0.0.0.0:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
healthcheck:
test: "cub kafka-ready -b localhost:9092 1 2"
interval: 2s
timeout: 5s
retries: 5
start_period: 30s
kafka-setup:
image: confluentinc/cp-kafka:7.0.0
depends_on:
kafka:
condition: service_healthy
command: >
sh -c '
# Blocks until kafka is reachable
echo -e "Waiting for kafka to be reachable"
kafka-topics --bootstrap-server kafka:29092 --list > /dev/null
declare -a topics=(
"cloudengineering.selfservice.kafkatopic"
"cloudengineering.selfservice.kafkaclusteraccess"
"cloudengineering.confluentgateway.access"
"cloudengineering.confluentgateway.provisioning"
)
total_topics=$${#topics[@]}
completed_topics=0
for topic in $${topics[@]}; do
((completed_topics++))
echo -e "Creating topic: $$topic ($$completed_topics/$$total_topics)"
kafka-topics --create --if-not-exists --bootstrap-server kafka:29092 --partitions 1 --replication-factor 1 --topic $$topic
if [ $$? -eq 0 ]; then
echo -e "Successfully created topic: $$topic"
else
echo -e "Failed to create topic: $$topic"
fi
done
echo -e "Success!"
'
environment:
KAFKA_BROKER_ID: ignored
KAFKA_ZOOKEEPER_CONNECT: ignored
outbox:
image: public.ecr.aws/d8r0z9h2/dafda-gendis:0.9.1
depends_on:
kafka-setup:
condition: service_completed_successfully
environment:
- DEFAULT_KAFKA_BOOTSTRAP_SERVERS=kafka:29092
- DB_CONNECTION_STRING=User ID=postgres;Password=p;Host=database;Port=5432;Database=db