-
Notifications
You must be signed in to change notification settings - Fork 39
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
113 lines (109 loc) · 3.2 KB
/
docker-compose.yml
File metadata and controls
113 lines (109 loc) · 3.2 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
services:
ddns:
image: davd/docker-ddns:1.2.1
restart: always
environment:
RECORD_TTL: 60
ZONE: '${DOMAIN}'
SHARED_SECRET: '${SHARED_SECRET}'
ports:
- "${DNS_PORT}:53"
- "${DNS_PORT}:53/udp"
volumes:
- ./data/bind-data:/var/cache/bind
networks:
red:
python:
image: pyddns:5.2.0
build: ./docker
restart: always
read_only: true
tmpfs:
- /tmp
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
volumes:
- ./appdata/pyddns:/usr/src/app
- ./appdata/static/node_modules:/usr/src/app/static/node_modules
environment:
DNS_HOST: ddns
DNS_API_PORT: 8080
DNS_DOMAIN: '${DOMAIN}'
DNS_SHARED_SECRET: '${SHARED_SECRET}'
DNS_ALLOW_AGENT: '${DNS_ALLOW_AGENT}'
DB_HOST: postgres
DB_NAME: '${DATABASE_NAME}'
DB_USER: '${DATABASE_USER}'
DB_PASSWORD: '${DATABASE_PASS}'
DJANGO_ADMIN_URL: '${DJANGO_ADMIN_URL}'
DJANGO_SU_NAME: '${DJANGO_SU_NAME}'
DJANGO_SU_EMAIL: '${DJANGO_SU_EMAIL}'
DJANGO_SU_PASSWORD: '${DJANGO_SU_PASSWORD}'
DJANGO_SECRET_KEY: '${DJANGO_SECRET_KEY}'
DJANGO_DEBUG: '${DJANGO_DEBUG}'
DJANGO_ALLOWED_HOSTS: '${DJANGO_ALLOWED_HOSTS}'
DJANGO_SETTINGS_MODULE: '${DJANGO_SETTINGS_MODULE:-pyddns.settings.production}'
DJANGO_LANGUAGE_CODE: '${DJANGO_LANGUAGE_CODE-}'
DJANGO_TIME_ZONE: '${DJANGO_TIME_ZONE:-UTC}'
ENABLE_REST_API: '${ENABLE_REST_API:-0}'
EMAIL_HOST: '${EMAIL_HOST-}'
EMAIL_PORT: '${EMAIL_PORT:-587}'
EMAIL_HOST_USER: '${EMAIL_HOST_USER-}'
EMAIL_HOST_PASSWORD: '${EMAIL_HOST_PASSWORD-}'
EMAIL_USE_TLS: '${EMAIL_USE_TLS:-1}'
EMAIL_USE_SSL: '${EMAIL_USE_SSL:-0}'
EMAIL_FROM: '${EMAIL_FROM-}'
SITE_URL: '${SITE_URL-}'
ALLOW_PASSWORD_RESET: '${ALLOW_PASSWORD_RESET:-1}'
OWN_ADMIN: '${OWN_ADMIN}'
DB_CONN_MAX_AGE: '${DB_CONN_MAX_AGE:-60}'
GUNICORN_WORKERS: '${GUNICORN_WORKERS:-3}'
ACTIVITY_LOG_RETENTION_WEEKS: '${ACTIVITY_LOG_RETENTION_WEEKS:-10}'
#MAX_DOMAINS_USER: '${MAX_DOMAINS_USER}'
depends_on:
postgres:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "python -c 'import socket; s=socket.socket(); s.settimeout(3); s.connect((\"127.0.0.1\", 8000)); s.close()'"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
networks:
red:
postgres:
image: postgres:15
restart: always
environment:
POSTGRES_PASSWORD: ${DATABASE_PASS}
POSTGRES_USER: '${DATABASE_NAME}'
POSTGRES_DB: '${DATABASE_USER}'
volumes:
- ./data/dbdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
networks:
red:
nginx:
image: nginx:1.27
ports:
- "${HTTP_PORT}:8000"
- "${HTTPS_PORT}:8443"
volumes:
- ./config/nginx_src:/src
- ./config/nginx:/etc/nginx/conf.d
- ./appdata/static:/static
- ./data/certs:/etc/nginx/certs
depends_on:
python:
condition: service_healthy
networks:
red:
networks:
red: