-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
154 lines (146 loc) · 6 KB
/
docker-compose.yml
File metadata and controls
154 lines (146 loc) · 6 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
services:
php:
container_name: ${DOCKER_PROJECT_NAME}_php
build: ./docker/php
restart: unless-stopped
volumes:
- ./:/var/www/html
- ./docker/php/php.ini:/usr/local/etc/php/php.ini
# if you use supervisor
#- ./docker/php/supervisor/messenger-worker.conf:/etc/supervisor/conf.d/messenger-worker.conf
depends_on:
- db
nginx:
container_name: ${DOCKER_PROJECT_NAME}_nginx
image: nginx:1.28.0
restart: unless-stopped
volumes:
- ./docker/nginx/logs:/var/log/nginx
- ./:/var/www/html
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- db
ports:
- 127.0.0.1:${DOCKER_NGINX_PORT}:80
db:
image: mariadb:11.7.2
container_name: ${DOCKER_PROJECT_NAME}_db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: ${DATABASE_PASSWORD}
MYSQL_DATABASE: ${DOCKER_PROJECT_NAME}
volumes:
# - ./sql:/sql
- ./docker/mysql/db:/var/lib/mysql
ports:
- 127.0.0.1:${DOCKER_DATABASE_PORT}:3306 # use 5432 for pgsql
# redis:
# image: redis:7.4.4-alpine
# restart: unless-stopped
# container_name: ${DOCKER_PROJECT_NAME}_redis
# Backup block. Turns on with docker compose --profile backup up -d
telegram-bot-api:
profiles:
- backup
env_file:
- .env.backup.local # copy from .env.backup.local.example as a template
image: ghcr.io/bots-house/docker-telegram-bot-api:latest
container_name: ${DOCKER_PROJECT_NAME}_tgbot
restart: unless-stopped
environment:
TELEGRAM_LOCAL: "true"
volumes:
- ./docker/tgbot/data:/var/lib/telegram-bot-api
backup:
profiles:
- backup
env_file:
- .env.backup.local # copy from .env.backup.local.example as a template
build: ./docker/backup
container_name: ${DOCKER_PROJECT_NAME}_backup
restart: unless-stopped
depends_on:
- db
- telegram-bot-api
environment:
PROJECT_NAME: ${DOCKER_PROJECT_NAME}
API_HOST: "telegram-bot-api:8081"
DB_ENGINE: mysql # or pgsql
DB_HOST: db
DB_PORT: 3306 # for pgsql use 5432
DB_NAME: ${DOCKER_PROJECT_NAME}
DB_USER: root
DB_PASS: ${DATABASE_PASSWORD}
PROJECT_PATH: /var/www/html
EXCLUDES: "vendor node_modules var/log storage/logs .git docker/nginx/logs"
volumes:
- ./:/var/www/html:ro
command:
- sh
- -lc
- |
printf "%s\n" "0 0 * * * /usr/local/bin/backup.sh >> /var/log/cron.log 2>&1" > /etc/crontabs/root
crond -f -l 8
# #######################################################################
# DKIM DNS SETUP INSTRUCTIONS:
# ----------------------------------------------------------------------|
# Add the following DNS record:
# Type: A
# Name: ${MAILSERVER_HOSTNAME}
# Value: SERVER IP4
# ----------------------------------------------------------------------|
# Type: TXT
# Name: ${MAILSERVER_DKIM_SELECTOR}._domainkey
# Value: (contents of ./docker/mailserver/dkim/${MAILSERVER_DKIM_SELECTOR}.txt.
# Without spaces and quotes and split each line max 255 characters. Tools: https://dkimcore.org/tools/ or
# https://www.mailhardener.com/tools/dns-record-splitter)
# for example:
# Value: v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo++V9EZhFQAjoqIduXPYyuPRl2T7QQVU9y
# 2RGGuUZ9OaMTT/XNiMRsE4iRLq6ZrtBCCMyOqyYmVmjpfKoq/PlQ3zkCDh3C/3GvR7TDH9Yc4BeLdYLxslF9UY5tUZDaQ9SsA0O+akQtAS
# ZUll2sD3OBmuc74mom1VmuV/BLop0t5fGOXR5PVG7YYy+enyMYbi4azNA++0pF0e50ViaP4E8lEUw6pl9TjokdUepRVJa5gDPG4QImy
# ByVqlx8yWkyPaVG+0X9U0xtCfSQnPzO8s1MRVANfQKIMe0yaGj/6GtntAqardi82NrgM9OieG3kn2syT03XPUEx7+Msl31r+APQIDAQAB
# ----------------------------------------------------------------------|
# Type: TXT
# Name: @
# Value: "v=spf1 ip4:YOUR_SERVER_IP -all"
# or add also another spf, for example if you use mail.ru:
# Value: "v=spf1 ip4:YOUR_SERVER_IP include:_spf.mail.ru -all"
# ----------------------------------------------------------------------|
# Type: TXT
# Name: _dmarc
# Value: "v=DMARC1; p=none; rua=mailto:info@your-domain.com"
# or more strict variation
# Value: "v=DMARC1; p=reject; rua=mailto:info@your-domain.com"
#
#
# UNCOMMENT BELOW
# #######################################################################
mailserver:
profiles:
- mailserver
image: mailserver/docker-mailserver:15.0.2
container_name: ${DOCKER_PROJECT_NAME}_mailserver
hostname: ${MAILSERVER_DOMAINNAME}
domainname: ${MAILSERVER_DOMAINNAME}
restart: unless-stopped
cap_add:
- NET_ADMIN
environment:
ENABLE_DKIM: 1
OPENDKIM_KEY_LENGTH: 2048
DKIM_SELECTOR: ${MAILSERVER_DKIM_SELECTOR}
ONE_DIR: 1
PERMIT_DOCKER: network
SMTP_ONLY: 0
MAILSERVER_DOMAINNAME: ${MAILSERVER_DOMAINNAME}
MAILSERVER_EMAIL: ${MAILSERVER_EMAIL}
MAILSERVER_EMAIL_PASSWORD: ${MAILSERVER_EMAIL_PASSWORD}
command: bash -c "/docker/init-dkim.sh && /usr/bin/supervisord -c /etc/supervisor/supervisord.conf"
ports:
- "${DOCKER_MAILSERVER_SMTP_PORT}:587"
volumes:
- ./docker/mailserver/mail-data:/var/mail
- ./docker/mailserver/mail-state:/var/mail-state
- ./docker/mailserver/init-dkim.sh:/docker/init-dkim.sh
- ./docker/mailserver/dkim:/docker/mailserver/dkim
- ./docker/mailserver/opendkim/:/etc/opendkim/