-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
154 lines (145 loc) · 4.41 KB
/
Copy pathdocker-compose.yml
File metadata and controls
154 lines (145 loc) · 4.41 KB
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
version: "3.8"
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- "22181:2181"
networks:
- localcdcdebeziumoutboxNetwork
kafka:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_PROCESS_ROLES: "broker,controller"
KAFKA_NODE_ID: 1
KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka:9093"
KAFKA_LISTENERS: "PLAINTEXT://0.0.0.0:9092,PLAINTEXT_INTERNAL://0.0.0.0:29092,CONTROLLER://0.0.0.0:9093"
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://localhost:9092,PLAINTEXT_INTERNAL://kafka:29092"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "PLAINTEXT:PLAINTEXT,PLAINTEXT_INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT"
KAFKA_INTER_BROKER_LISTENER_NAME: "PLAINTEXT_INTERNAL"
KAFKA_CONTROLLER_LISTENER_NAMES: "CONTROLLER"
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_LOG_MESSAGE_TIMESTAMP_DIFFERENCE_MAX_MS: "31536000000" # 365 days
networks:
- localcdcdebeziumoutboxNetwork
kafka-init:
image: confluentinc/cp-kafka:latest
depends_on:
- kafka
entrypoint:
- bash
- -lc
- |
echo "===== kafka-init starting ====="
echo "Waiting for Kafka to start..."
sleep 20
echo "Creating topic customerdb.outbox_event..."
kafka-topics --create --if-not-exists \
--topic customerdb.outbox_event \
--bootstrap-server kafka:29092 \
--partitions 1 \
--replication-factor 1
echo "Done creating topic customerdb.outbox_event."
echo "Sleeping before exit..."
sleep 60
echo "===== kafka-init finished ====="
networks:
- localcdcdebeziumoutboxNetwork
kafdrop:
image: obsidiandynamics/kafdrop:latest
depends_on:
- kafka
ports:
- "9000:9000"
environment:
KAFKA_BROKERCONNECT: "kafka:29092"
SERVER_PORT: 9000
JVM_OPTS: "-Xms32M -Xmx64M"
networks:
- localcdcdebeziumoutboxNetwork
mysql:
image: mysql:latest
environment:
MYSQL_DATABASE: customerdb
MYSQL_ROOT_PASSWORD: ${DATABASE_PASSWORD}
ports:
- "3307:3306"
command:
- --binlog-format=ROW
- --server-id=223344
- --log-bin=mysql-bin
- --binlog-do-db=customerdb
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u${DATABASE_USERNAME:-root} -p${DATABASE_PASSWORD:-password} --silent"]
interval: 10s
timeout: 5s
retries: 12
start_period: 20s
volumes:
# init scripts to create tables etc.
- ./mysql-init:/docker-entrypoint-initdb.d
networks:
- localcdcdebeziumoutboxNetwork
connect:
image: debezium/connect:3.0.0.Final
depends_on:
- kafka
- mysql
ports:
- "8083:8083"
environment:
BOOTSTRAP_SERVERS: "kafka:29092"
GROUP_ID: 1
CONFIG_STORAGE_TOPIC: connect-configs
OFFSET_STORAGE_TOPIC: connect-offsets
STATUS_STORAGE_TOPIC: connect-status
KEY_CONVERTER_SCHEMAS_ENABLE: "false"
VALUE_CONVERTER_SCHEMAS_ENABLE: "false"
KEY_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
VALUE_CONVERTER: "org.apache.kafka.connect.json.JsonConverter"
networks:
- localcdcdebeziumoutboxNetwork
customer-service:
build: ./customer-service
env_file:
- .env
depends_on:
mysql:
condition: service_healthy
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/customerdb
SPRING_DATASOURCE_USERNAME: ${DATABASE_USERNAME}
SPRING_DATASOURCE_PASSWORD: ${DATABASE_PASSWORD}
ports:
- "3434:3434"
networks:
- localcdcdebeziumoutboxNetwork
notification-service:
build: ./notification-service
env_file:
- .env
depends_on:
- kafka
environment:
SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:29092
SPRING_MAIL_HOST: ${SPRING_MAIL_HOST}
SPRING_MAIL_PORT: ${SPRING_MAIL_PORT}
SPRING_MAIL_USERNAME: ${SPRING_MAIL_USERNAME}
SPRING_MAIL_PASSWORD: ${SPRING_MAIL_PASSWORD}
MAIL_TO: ${MAIL_TO}
ports:
- "3435:3435"
networks:
- localcdcdebeziumoutboxNetwork
networks:
localcdcdebeziumoutboxNetwork:
driver: bridge