-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathdocker-compose.deploy.yml
More file actions
121 lines (110 loc) · 3.44 KB
/
docker-compose.deploy.yml
File metadata and controls
121 lines (110 loc) · 3.44 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
version: '3'
services:
exim:
image: mailbroker_exim:${CI_COMMIT_SHA}
restart: always
volumes:
# volume for store DKIM keys
- ${DATA_PATH}/exim/etc/ssl/certs/dkim:/etc/ssl/certs/dkim
# mails
- ${DATA_PATH}/exim/var/spool:/var/spool
- ${DATA_PATH}/exim/var/mail:/var/mail
ports:
- ${EXIM_PORT}:${EXIM_PORT}
environment:
- EXIM_DOMAIN=${EXIM_DOMAIN}
- EXIM_PORT=${EXIM_PORT}
- INCOMING_MAIL_MAX_SIZE_KILOBYTES=${INCOMING_MAIL_MAX_SIZE_KILOBYTES}
- EXIM_MAIL_USER=${EXIM_MAIL_USER}
- EXIM_MAIL_PASS=${EXIM_MAIL_PASS}
- EXIM_DKIM_SELECTOR=${EXIM_DKIM_SELECTOR}
- EXIM_MAX_PARALLEL=${EXIM_MAX_PARALLEL}
- EXIM_DEBUG=${EXIM_DEBUG}
- TZ=${TZ}
hostname: ${EXIM_DOMAIN}
healthcheck:
test: exiwhat | grep -qF "listening for SMTP on port" || exit 1
interval: 60s
timeout: 5s
start_period: 15s
depends_on:
- dns
spamassassin:
image: mailbroker_spamassassin:${CI_COMMIT_SHA}
restart: always
environment:
- TZ=${TZ}
depends_on:
- dns
mongo:
image: mongo
restart: always
volumes:
- ${DATA_PATH}/mongo/data/db:/data/db
dns:
image: mailbroker_dns:${CI_COMMIT_SHA}
restart: always
environment:
- DNS_CACHE_MIN_TTL=${DNS_CACHE_MIN_TTL}
- DNS_CACHE_MAX_TTL=${DNS_CACHE_MAX_TTL}
- DNS_CACHE_MAX_NEGATIVE_TTL=${DNS_CACHE_MAX_NEGATIVE_TTL}
- DNS_DEBUG=${DNS_DEBUG}
- DNS_STATISTICS_INTERVAL=${DNS_STATISTICS_INTERVAL}
- DNS_LOG_QUERIES=${DNS_LOG_QUERIES}
- DNS_LOG_REPLIES=${DNS_LOG_REPLIES}
- DNS_LOG_SERVFAIL=${DNS_LOG_SERVFAIL}
- TZ=${TZ}
healthcheck:
test: drill @127.0.0.1 cloudflare.com || exit 1
interval: 60s
timeout: 3s
start_period: 15s
api:
image: mailbroker_api:${CI_COMMIT_SHA}
restart: always
volumes:
- ${DATA_PATH}/api/etc/api:/etc/api
environment:
- API_DOMAIN=${API_DOMAIN}
- ADMIN_EMAIL=${ADMIN_EMAIL}
- API_PUBLIC_DNS=${API_PUBLIC_DNS}
- API_AVAILABLE_TESTS=${API_AVAILABLE_TESTS}
- API_CATCH_MTA_TO=${API_CATCH_MTA_TO}
- API_REPLY_MTA_REPORT_TO=${API_REPLY_MTA_REPORT_TO}
- API_WORKER_CHECK_ALL_CNT=${API_WORKER_CHECK_ALL_CNT}
- INCOMING_MAIL_MAX_SIZE_KILOBYTES=${INCOMING_MAIL_MAX_SIZE_KILOBYTES}
- API_MAX_MAIL_COUNT=${API_MAX_MAIL_COUNT}
- API_BLACKLIST_DOMAINS=${API_BLACKLIST_DOMAINS}
- EXIM_PORT=${EXIM_PORT}
- EXIM_DOMAIN=${EXIM_DOMAIN}
- EXIM_MAIL_USER=${EXIM_MAIL_USER}
- EXIM_MAIL_PASS=${EXIM_MAIL_PASS}
- EXIM_MAIL_FROM=${EXIM_MAIL_FROM}
- RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
- RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
- RABBITMQ_DEFAULT_VHOST=${RABBITMQ_DEFAULT_VHOST}
- TZ=${TZ}
ports:
- ${API_PORT}:80
healthcheck:
test: ./docker-healthcheck.sh || exit 1
interval: 15s
timeout: 3s
start_period: 15s
depends_on:
- dns
- mongo
- exim
- spamassassin
- rabbitmq
# workspace: skipped as it is only used for development
rabbitmq:
image: rabbitmq:management
restart: always
hostname: rabbitmq
volumes:
- ${DATA_PATH}/rabbitmq/var/lib/rabbitmq/mnesia:/var/lib/rabbitmq/mnesia
environment:
- RABBITMQ_DEFAULT_USER=${RABBITMQ_DEFAULT_USER}
- RABBITMQ_DEFAULT_PASS=${RABBITMQ_DEFAULT_PASS}
- RABBITMQ_DEFAULT_VHOST=${RABBITMQ_DEFAULT_VHOST}