-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
136 lines (126 loc) · 4.09 KB
/
docker-compose.yml
File metadata and controls
136 lines (126 loc) · 4.09 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
version: "3.7"
services:
kafka-broker:
image: bitnami/kafka:latest
container_name: kafka-broker
user: "${UID}"
hostname: kafka-broker
ports:
- "${IP:-0.0.0.0}:9094:9094"
- "${IP:-0.0.0.0}:9093:9093"
- "${IP:-0.0.0.0}:9092:9092"
environment:
KAFKA_CFG_LISTENERS: PLAINTEXT://:9092,CONTROLLER://:9093,EXTERNAL://:9094
KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://kafka-broker:9092,EXTERNAL://kafka-broker:9094
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP: CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT
ALLOW_PLAINTEXT_LISTENER: yes
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka-broker:9092,EXTERNAL://kafka-broker:9094
KAFKA_BROKER_ID: 0
KAFKA_CFG_NODE_ID: 0
KAFKA_CFG_PROCESS_ROLES: controller,broker
KAFKA_CFG_CONTROLLER_LISTENER_NAMES: CONTROLLER
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS: 0@kafka-broker:9093
volumes:
- kafka-broker-data:/bitnami
init-kafka:
image: confluentinc/cp-kafka:latest
user: "${UID}"
depends_on:
- kafka-broker
entrypoint: [ '/bin/sh', '-c' ]
command: |
"
# blocks until kafka is reachable
kafka-topics --bootstrap-server kafka-broker:9092 --list
echo -e 'Creating kafka topics'
kafka-topics --bootstrap-server kafka-broker:9092 --create --if-not-exists --topic sample_topic_2 --replication-factor 1 --partitions 1
kafka-topics --bootstrap-server kafka-broker:9092 --create --if-not-exists --topic keycloak-events --replication-factor 1 --partitions 1
kafka-topics --bootstrap-server kafka-broker:9092 --create --if-not-exists --topic keycloak-admin-events --replication-factor 1 --partitions 1
echo -e 'Successfully created the following topics:'
kafka-topics --bootstrap-server kafka-broker:9092 --list
"
postgres-keycloak:
image: postgres:16.4
container_name: postgres-keycloak
user: "${UID}"
hostname: postgres-keycloak
volumes:
- postgres-data-keycloak:/var/lib/postgresql/data
environment:
POSTGRES_DB: keycloak
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: keycloak
ports:
- "${IP:-0.0.0.0}:5433:5432"
keycloak:
image: xcodeassociated/keycloak-kafka:latest
user: "${UID}"
pull_policy: always
container_name: keycloak
hostname: keycloak
ports:
- "8090:8080"
depends_on:
- postgres-keycloak
- kafka-broker
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
KAFKA_TOPIC: keycloak-events
KAFKA_CLIENT_ID: keycloak
KAFKA_BOOTSTRAP_SERVERS: kafka-broker:9092
KAFKA_EVENTS: "REGISTER,LOGIN,LOGOUT"
KAFKA_ADMIN_TOPIC: keycloak-admin-events
KC_DB_URL_HOST: postgres-keycloak
KC_DB_URL_DATABASE: keycloak
KC_DB_URL_PORT: 5432
KC_DB: postgres
KC_DB_USERNAME: keycloak
KC_DB_PASSWORD: keycloak
KC_DB_SCHEMA: public
KC_HOSTNAME_STRICT: false
KC_HTTP_ENABLED: true
command:
- start-dev
volumes:
- keycloak-data:/opt/keycloak/data/
mongo:
container_name: mongo_rs_primary
user: "${UID}"
hostname: mongo
image: mongo:6.0.4
ports:
- "${IP:-0.0.0.0}:27017:27017"
entrypoint: [ "/usr/bin/mongod", "--config", "/etc/mongod.conf", "--bind_ip_all", "--replSet", "rs0" ]
environment:
- MONGO_INITDB_ROOT_USERNAME=user
- MONGO_INITDB_ROOT_PASSWORD=password
- MONGO_INITDB_DATABASE=example_db
volumes:
- mongo-rs-primary-data:/data/db
- "./mongo-rs/config/mongodb/mongod.conf:/etc/mongod.conf"
volumes:
kafka-broker-data:
driver: local
driver_opts:
o: bind
type: none
device: ./kafka+keycloak/volumes/kafka-broker
postgres-data-keycloak:
driver: local
driver_opts:
o: bind
type: none
device: ./kafka+keycloak/volumes/postgres
keycloak-data:
driver: local
driver_opts:
o: bind
type: none
device: ./kafka+keycloak/volumes/keycloak
mongo-rs-primary-data:
driver: local
driver_opts:
o: bind
type: none
device: ./mongo-rs/volumes/mongodb