-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
181 lines (168 loc) · 4.96 KB
/
docker-compose.yml
File metadata and controls
181 lines (168 loc) · 4.96 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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
x-service-defaults: &service-defaults
restart: always
networks:
- default
x-app-template: &app-template
<<: *service-defaults
image: ghcr.io/dtcooper/jewpizza-app:${PINNED_CONTAINER_VERSION:-latest}
build:
context: .
dockerfile: backend/Dockerfile
args:
- "DEBUG=${DEBUG:-0}"
volumes:
- ./.env:/.env:ro
- ./serve:/serve
depends_on:
- db
- redis
services:
app:
<<: *app-template
environment:
- "TZ=${TIMEZONE:-US/Eastern}"
networks:
default:
# Allow overriding for this container, so we can run multiple at once
ipv4_address: "${APP_IP_OVERRIDE:-172.22.0.2}" # Referenced in nginx/image/etc/nginx/templates/jewpizza.conf.j2
tasks:
<<: *app-template
environment:
- RUN_HUEY=1
- "TZ=${TIMEZONE:-US/Eastern}"
networks:
default:
ipv4_address: 172.22.0.3
radio:
<<: *service-defaults
image: ghcr.io/dtcooper/jewpizza-radio:${PINNED_CONTAINER_VERSION:-latest}
build:
context: radio
args:
- "DEBUG=${DEBUG:-0}"
init: true
volumes:
- ./.env:/.env:ro
# Wait on app in /entrypoint.sh but don't list here, to avoid restarting container
depends_on:
- icecast
environment:
- "TZ=${TIMEZONE:-US/Eastern}"
extra_hosts:
- "host.docker.internal:host-gateway"
labels:
- "autoheal=true"
networks:
default:
ipv4_address: 172.22.0.4
nginx:
<<: *service-defaults
image: ghcr.io/dtcooper/jewpizza-nginx:${PINNED_CONTAINER_VERSION:-latest}
build:
context: nginx
volumes:
- nginx_secrets:/etc/letsencrypt
- ./.env:/.env:ro
- ./serve:/serve
environment:
- "CERTBOT_DNS_PROPAGATION_SECONDS=${CERTBOT_DNS_PROPAGATION_SECONDS:-90}"
- "CERTBOT_EMAIL=${EMAIL_ADDRESS:?EMAIL_ADDRESS needs to be set. See .env file.}"
- "DEBUG=${DEBUG:-0}"
- "DIGITALOCEAN_API_TOKEN=${DIGITALOCEAN_API_TOKEN:-}"
- "STAGING=${LETSENCRYPT_STAGING:-0}"
ports:
- "${HTTP_PORT:-80}:80"
- "${HTTPS_PORT:-443}:443"
networks:
default:
ipv4_address: 172.22.0.5
icecast:
<<: *service-defaults
image: ghcr.io/dtcooper/jewpizza-icecast:${PINNED_CONTAINER_VERSION:-latest}
build:
context: icecast
environment:
- "DOMAIN_NAME=${DOMAIN_NAME:?DOMAIN_NAME needs to be set. See .env file.}"
- "EMAIL_ADDRESS=${EMAIL_ADDRESS:?EMAIL_ADDRESS needs to be set. See .env file.}"
- "ICECAST_ADMIN_PASSWORD=${ICECAST_ADMIN_PASSWORD:?ICECAST_ADMIN_PASSWORD needs to be set. See .env file.}"
- "ICECAST_SOURCE_PASSWORD=${ICECAST_SOURCE_PASSWORD:?ICECAST_SOURCE_PASSWORD needs to be set. See .env file.}"
- "TZ=${TIMEZONE:-US/Eastern}"
ports:
- "${ICECAST_PORT:-8888}:8888"
networks:
default:
ipv4_address: 172.22.0.6 # Referenced in nginx/image/etc/nginx/templates/jewpizza.conf.j2
db:
<<: *service-defaults
image: library/postgres:14.4-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
- ./scripts/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh
environment:
- POSTGRES_PASSWORD=postgres
- "TZ=${TIMEZONE:-US/Eastern}"
networks:
default:
ipv4_address: 172.22.0.7
redis:
<<: *service-defaults
image: library/redis:7.0-alpine
volumes:
- redis_data:/data
environment:
- "TZ=${TIMEZONE:-US/Eastern}"
networks:
default:
ipv4_address: 172.22.0.8 # Referenced in nginx/image/etc/nginx/templates/jewpizza.conf.j2
umami:
<<: *service-defaults
image: ghcr.io/mikecao/umami:postgresql-v1.33.1
depends_on:
- db
environment:
- DATABASE_URL=postgresql://postgres:postgres@db:5432/umami
- DATABASE_TYPE=postgresql
- TELEMETRY_DISABLED=1
- "HASH_SALT=${SECRET_KEY:?SECRET_KEY needs to be set. See .env file.}"
- "IGNORE_IP=${UMAMI_IGNORE_IPS:-}"
- "TZ=${TIMEZONE:-US/Eastern}"
networks:
default:
ipv4_address: 172.22.0.9 # Referenced in nginx/image/etc/nginx/templates/jewpizza.conf.j2
logs:
<<: *service-defaults
image: amir20/dozzle:v3.12.7
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DOZZLE_TAILSIZE=2500
- DOZZLE_NO_ANALYTICS=true
- "DOZZLE_BASE=/cmsadmin/tools/logs"
- "TZ=${TIMEZONE:-US/Eastern}"
networks:
default:
ipv4_address: 172.22.0.10 # Referenced in nginx/image/etc/nginx/templates/jewpizza.conf.j2
autoheal:
<<: *service-defaults
image: willfarrell/autoheal:1.2.0
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- AUTOHEAL_START_PERIOD=30
- "TZ=${TIMEZONE:-US/Eastern}"
networks:
default:
ipv4_address: 172.22.0.11
volumes:
nginx_secrets:
postgres_data:
redis_data:
networks:
default:
name: jewpizza
driver: bridge
ipam:
driver: default
config:
- subnet: "172.22.0.0/16"
gateway: "172.22.0.1"