Repository navigation
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
138 lines (129 loc) · 3.76 KB
/
Copy pathdocker-compose.yml
File metadata and controls
138 lines (129 loc) · 3.76 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
name: bird-ringing
services:
database-init:
image: postgres:18-alpine
environment:
POSTGRES_DB: ringdb
POSTGRES_PASSWORD_FILE: /run/secrets/postgres-pass
DB_ADMIN_PASSWORD_FILE: /run/secrets/db-admin-pass
DB_USER_PASSWORD_FILE: /run/secrets/db-user-pass
volumes:
- database-vol:/var/lib/postgresql
- ./initdb.d:/docker-entrypoint-initdb.d:ro
secrets:
- postgres-pass
- db-admin-pass
- db-user-pass
command: ["docker-ensure-initdb.sh"]
database:
image: postgres:18-alpine
volumes:
- database-vol:/var/lib/postgresql
healthcheck:
test: ["CMD", "pg_isready", "-U", "postgres"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
depends_on:
database-init:
condition: service_completed_successfully
backend-init:
image: &backund-image ghcr.io/nbisweden/bird-ringing-backend:${TAG:-latest}
build: &backend-build
target: backend-prod
args:
BUILD_ID: "${BUILD_ID:-6000:6000}"
RUNTIME_ID: "${RUNTIME_ID:-6001:6001}"
environment:
POSTGRES_USER: db_admin
SERVICE_MODE: production-init
POSTGRES_PASSWORD_FILE: /run/secrets/db-admin-pass
DJANGO_SECRET_FILE: /run/secrets/django-secret-key
depends_on:
database:
condition: service_healthy
secrets:
- db-admin-pass
- django-secret-key
backend:
image: *backund-image
build: *backend-build
environment:
POSTGRES_USER: db_user
SERVICE_MODE: production
POSTGRES_PASSWORD_FILE: /run/secrets/db-user-pass
DJANGO_SECRET_FILE: /run/secrets/django-secret-key
DJANGO_ALLOWED_HOSTS: ${DJANGO_ALLOWED_HOSTS:-}
LICENSE_CARD_FILE: ${LICENSE_CARD_FILE:-}
PERMIT_TEMPLATE_FILE: ${PERMIT_TEMPLATE_FILE:-}
DOCX2PDF_URL: http://docx2pdf:8000/convert/docx-to-pdf
DJANGO_EMAIL_HOST_PASSWORD_FILE: /run/secrets/django-email-password
DJANGO_TEMPLATES_DIR: /resources/templates
volumes:
- ./resources:/resources:ro
healthcheck:
test: ["CMD", "wget", "--spider", "--timeout=5", "http://backend:8000/api/system/health/"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
depends_on:
backend-init:
condition: service_completed_successfully
docx2pdf:
condition: service_healthy
secrets:
- db-user-pass
- django-secret-key
- django-email-password
docx2pdf:
image: ghcr.io/nbisweden/bird-ringing-docx2pdf:${TAG:-latest}
build:
context: ./docx2pdf
dockerfile: ../Dockerfile.docx2pdf
tmpfs:
- /tmp
healthcheck:
test: ["CMD", "wget", "--spider", "--timeout=5", "http://docx2pdf:8000/health"]
interval: 10s
timeout: 5s
retries: 10
start_period: 10s
proxy:
image: ghcr.io/nbisweden/bird-ringing-proxy:${TAG:-latest}
build:
target: proxy-prod
args:
BUILD_ID: "${BUILD_ID:-6000:6000}"
RUNTIME_ID: "${RUNTIME_ID:-6001:6001}"
BUILD_GIT_COMMIT: "${BUILD_GIT_COMMIT:-}"
BUILD_GIT_BRANCH: "${BUILD_GIT_BRANCH:-}"
ports:
- 127.0.0.1:3210:80
volumes:
- ./caddy:/etc/caddy:ro
- proxy-vol:/data
healthcheck:
test: ["CMD", "wget", "--spider", "--timeout=5", "http://proxy/health"]
interval: 10s
timeout: 5s
retries: 5
start_period: 10s
depends_on:
backend:
condition: service_healthy
volumes:
database-vol:
proxy-vol:
secrets:
postgres-pass:
file: ./secrets/postgres-pass.txt
db-admin-pass:
file: ./secrets/db-admin-pass.txt
db-user-pass:
file: ./secrets/db-user-pass.txt
django-secret-key:
file: ./secrets/django-secret-key.txt
django-email-password:
file: ./secrets/django-email-password.txt