-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcompose.yml
156 lines (145 loc) · 3.74 KB
/
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
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
155
156
name: "$$COMPOSE_BASE_NAME$$"
include:
- ./compose.base.yml
x-scaling:
classifier: &scale-classifier
scale: ${CLASSIFIER_SCALE:-1}
services:
# Kafka Connect in the full configuration, including PostgreSQL
kafka-connect:
build:
context: ./kafka_connect/
dockerfile: kafka_connect.Dockerfile
depends_on:
initializer:
condition: service_completed_successfully
postgres:
condition: service_started
secrets:
- kafka-truststore
- kafka-connect-keystore
networks:
kafka-clients:
ipv4_address: 192.168.100.10
aliases: [ "kafka-connect" ]
databases: {}
outside-world:
ipv4_address: 192.168.103.10
ports:
- "31002:8083"
volumes:
- ./kafka_connect/properties/:/opt/kafka-connect/config/
- kafka-connect-offsets:/tmp/kafka-connect
loader:
image: domrad/loader
restart: always
depends_on:
initializer:
condition: service_completed_successfully
postgres:
condition: service_started
networks:
- kafka-clients
- databases
- outside-world
volumes:
- ./secrets/secrets_loader/:/app/secrets
- ./misc/testing_domains.txt:/app/sample.txt
env_file:
- ./envs/loader.env
webui:
image: domrad/webui
restart: always
depends_on:
kafka1:
condition: service_started
postgres:
condition: service_healthy
networks:
- kafka-clients
- databases
- outside-world
ports:
- "31003:31003"
volumes:
- ./secrets/secrets_webui/:/app/kafka-ssl
env_file:
- ./envs/webui.env
config-manager:
profiles:
- configmanager
image: domrad/config-manager
depends_on:
initializer:
condition: service_completed_successfully
user: root
secrets:
- ca-cert
- config-manager-cert
- config-manager-key
networks:
- kafka-clients
volumes:
- ./client_properties/:/var/domainradar_properties/
- ./client_properties/config_manager.toml:/app/config.toml
- ./domrad_control.sock:/app/config_manager.sock
# --- Classifier --- #
classifier:
<<: *scale-classifier
image: domrad/classifier
restart: always
depends_on:
initializer:
condition: service_completed_successfully
secrets:
- ca-cert
- classifier-unit-cert
- classifier-unit-key
networks:
- kafka-clients
volumes:
- ./client_properties/classifier_unit.toml:/app/config.toml
# --- Databases --- #
postgres:
image: docker.io/postgres:16
mem_limit: "${POSTGRES_MEM_LIMIT:-2gb}"
restart: always
secrets:
- postgres_master_password
- postgres_prefilter_password
- postgres_controller_password
- postgres_connect_password
- postgres_webui_password
volumes:
- postgres-data:/var/lib/postgresql/data
- ./postgres/init/:/docker-entrypoint-initdb.d/
- ./postgres/postgres.conf:/etc/postgresql/postgresql.conf
env_file:
- ./postgres/postgres.env
ports:
- "31010:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 10s
timeout: 5s
retries: 5
networks:
databases:
ipv4_address: 192.168.101.2
aliases: [ "postgres" ]
outside-world:
ipv4_address: 192.168.103.20
volumes:
postgres-data: {}
kafka-connect-offsets: {}
secrets:
postgres_master_password:
file: ./postgres/master.secret
postgres_prefilter_password:
file: ./postgres/prefilter.secret
postgres_controller_password:
file: ./postgres/controller.secret
postgres_connect_password:
file: ./postgres/connect.secret
postgres_webui_password:
file: ./postgres/webui.secret