-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdocker-compose.yaml
130 lines (106 loc) · 5.08 KB
/
docker-compose.yaml
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
services:
rabbitmq:
image: rabbitmq:3.12.12-management-alpine
hostname: rabbitmq
restart: always
mem_limit: 1g
cpu_count: 4
cpus: 0.5
environment:
- RABBITMQ_DEFAULT_USER=rmuser
- RABBITMQ_DEFAULT_PASS=rmpassword
- RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS=-rabbit log_levels [{connection,error},{default,error}] disk_free_limit 2147483648
volumes:
- ./rabbitmq:/var/lib/rabbitmq
- ./rabbitmq-settings/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf:ro
# Необходимо создать сертификаты для домена и пользователя RabbitMQ
- ./rabbitmq-settings/root.crt:/etc/ssl/rmq-cacert.pem:ro
- ./rabbitmq-settings/server.crt:/etc/ssl/rmq-cert.pem:ro
- ./rabbitmq-settings/server.key:/etc/ssl/rmq-key.pem:ro
ports:
- "15672:15672" # Веб панель
- "5671:5671" # AMQP + TLS
healthcheck:
test: rabbitmq-diagnostics -q ping
interval: 30s
timeout: 30s
retries: 3
producer:
build: .
image: rmq-notifier:v1
command: producer 0.0.0.0:9090
ports:
- "9090:9090"
environment:
# Где искать файл конфигурации внутри контейнера.
CONFIG_FILE: /etc/rmq-notifier/config.json
AUTH_TOKEN: insecureToken # Токен авторизации, который нужно отправлять в HTTP запросе.
EXCHANGE_NAME: exchangeName # RabbitMQ exchange name.
# Где искать сертификаты внутри контейнера.
RABBITMQ_CACERT: /ssl/root.crt
RABBITMQ_CERTFILE: /ssl/client.crt
RABBITMQ_KEYFILE: /ssl/client.key
volumes:
# Можно указать свой файл конфигурации.
- "./config.json:/etc/rmq-notifier/config.json:ro"
# Указываем необходимые сертификаты только для чтения.
- "./rabbitmq-settings/root.crt:/ssl/root.crt:ro"
- "./rabbitmq-settings/client.crt:/ssl/client.crt:ro"
- "./rabbitmq-settings/client.key:/ssl/client.key:ro"
depends_on:
rabbitmq:
condition: service_healthy
email-consumer:
build: .
image: rmq-notifier:v1
command: consumer email # Запускаем consumer в режиме email.
environment:
# Где искать файл конфигурации внутри контейнера.
CONFIG_FILE: /etc/rmq-notifier/config.json
EXCHANGE_NAME: exchangeName # RabbitMQ exchange name.
# Где искать сертификаты внутри контейнера.
RABBITMQ_CACERT: /ssl/root.crt
RABBITMQ_CERTFILE: /ssl/client.crt
RABBITMQ_KEYFILE: /ssl/client.key
CONSUMER_NAME: email-consumer # Название не должно повторяться.
CONSUMER_QUEUE: email-notification # Название очереди, которую будет читать Consumer.
# Ключ маршрутизации для RabbitMQ.
# Это и будет URL, по которому Producer нужно отправлять EMAIL оповещения.
CONSUMER_ROUTING_KEY: email
CONSUMER_COUNT: 5 # Кол-во обработчиков.
volumes:
# Можно указать свой файл конфигурации.
- "./config.json:/etc/rmq-notifier/config.json:ro"
# Указываем необходимые сертификаты только для чтения.
- "./rabbitmq-settings/root.crt:/ssl/root.crt:ro"
- "./rabbitmq-settings/client.crt:/ssl/client.crt:ro"
- "./rabbitmq-settings/client.key:/ssl/client.key:ro"
depends_on:
rabbitmq:
condition: service_healthy
telegram-consumer:
build: .
image: rmq-notifier:v1
command: consumer telegram # Запускаем consumer в режиме Telegram.
environment:
# Где искать файл конфигурации внутри контейнера.
CONFIG_FILE: /etc/rmq-notifier/config.json
EXCHANGE_NAME: exchangeName # RabbitMQ exchange name.
# Где искать сертификаты внутри контейнера.
RABBITMQ_CACERT: /ssl/root.crt
RABBITMQ_CERTFILE: /ssl/client.crt
RABBITMQ_KEYFILE: /ssl/client.key
CONSUMER_NAME: telegram-consumer
CONSUMER_QUEUE: telegram-notification # Указываем отдельную очередь.
CONSUMER_ROUTING_KEY: telegram # Указываем другой ключ маршрутизации.
CONSUMER_COUNT: 5 # Кол-во обработчиков.
volumes:
# Можно указать свой файл конфигурации.
- "./config.json:/etc/rmq-notifier/config.json:ro"
# Указываем необходимые сертификаты только для чтения.
- "./rabbitmq-settings/root.crt:/ssl/root.crt:ro"
- "./rabbitmq-settings/client.crt:/ssl/client.crt:ro"
- "./rabbitmq-settings/client.key:/ssl/client.key:ro"
depends_on:
rabbitmq:
condition: service_healthy