Eric Bower
·
23 Sep 24
docker-compose.prod.yml
1version: "3.8"
2services:
3 postgres:
4 env_file:
5 - .env.prod
6 volumes:
7 - ./data/postgres-data:/var/lib/postgresql/data
8 ports:
9 - "5432:5432"
10 command: -N 1024 -B 4096MB
11 minio-caddy:
12 image: ghcr.io/picosh/pico/caddy:latest
13 restart: always
14 env_file:
15 - .env.prod
16 environment:
17 APP_DOMAIN: pico.sh
18 APP_EMAIL: ${MINIO_EMAIL:-hello@pico.sh}
19 volumes:
20 - ${MINIO_CADDYFILE}:/etc/caddy/Caddyfile
21 - ./data/minio-caddy/data:/data
22 - ./data/minio-caddy/config:/config
23 ports:
24 - "80:80"
25 - "443:443"
26 profiles:
27 - db
28 - all
29 minio:
30 env_file:
31 - .env.prod
32 volumes:
33 - ./data/minio-data:/data
34 registry:
35 env_file:
36 - .env.prod
37 volumes:
38 - ./imgs/registry.yml:/etc/docker/registry/config.yml
39 networks:
40 - imgs
41 imgproxy:
42 env_file:
43 - .env.prod
44 volumes:
45 - ./data/imgs-storage/data:/storage/imgs
46 - ./data/pgs-storage/data:/storage/pgs
47 pastes-caddy:
48 image: ghcr.io/picosh/pico/caddy:latest
49 restart: always
50 networks:
51 - pastes
52 env_file:
53 - .env.prod
54 environment:
55 APP_DOMAIN: ${PASTES_DOMAIN:-pastes.sh}
56 APP_EMAIL: ${PASTES_EMAIL:-hello@pico.sh}
57 volumes:
58 - ${PASTES_CADDYFILE}:/etc/caddy/Caddyfile
59 - ./data/pastes-caddy/data:/data
60 - ./data/pastes-caddy/config:/config
61 ports:
62 - "${PASTES_HTTPS_V4:-443}:443"
63 - "${PASTES_HTTP_V4:-80}:80"
64 - "${PASTES_HTTPS_V6:-[::1]:443}:443"
65 - "${PASTES_HTTP_V6:-[::1]:80}:80"
66 profiles:
67 - pastes
68 - caddy
69 - all
70 pastes-web:
71 networks:
72 pastes:
73 aliases:
74 - web
75 env_file:
76 - .env.prod
77 pastes-ssh:
78 networks:
79 pastes:
80 aliases:
81 - ssh
82 env_file:
83 - .env.prod
84 volumes:
85 - ./data/pastes-ssh/data:/app/ssh_data
86 ports:
87 - "${PASTES_SSH_V4:-22}:2222"
88 - "${PASTES_SSH_V6:-[::1]:22}:2222"
89 pubsub-caddy:
90 image: ghcr.io/picosh/pico/caddy:latest
91 restart: always
92 networks:
93 - pubsub
94 env_file:
95 - .env.prod
96 environment:
97 APP_DOMAIN: ${PUBSUB_DOMAIN:-send.pico.sh}
98 APP_EMAIL: ${PUBSUB_EMAIL:-hello@pico.sh}
99 volumes:
100 - ${PUBSUB_CADDYFILE}:/etc/caddy/Caddyfile
101 - ./data/pubsub-caddy/data:/data
102 - ./data/pubsub-caddy/config:/config
103 ports:
104 - "${PUBSUB_HTTPS_V4:-443}:443"
105 - "${PUBSUB_HTTP_V4:-80}:80"
106 - "${PUBSUB_HTTPS_V6:-[::1]:443}:443"
107 - "${PUBSUB_HTTP_V6:-[::1]:80}:80"
108 profiles:
109 - pubsub
110 - caddy
111 - all
112 pubsub-web:
113 networks:
114 pubsub:
115 aliases:
116 - web
117 env_file:
118 - .env.prod
119 pubsub-ssh:
120 networks:
121 pubsub:
122 aliases:
123 - ssh
124 env_file:
125 - .env.prod
126 volumes:
127 - ./data/pubsub-ssh/data:/app/ssh_data
128 ports:
129 - "${PUBSUB_SSH_V4:-22}:2222"
130 - "${PUBSUB_SSH_V6:-[::1]:22}:2222"
131 prose-caddy:
132 image: ghcr.io/picosh/pico/caddy:latest
133 restart: always
134 networks:
135 - prose
136 env_file:
137 - .env.prod
138 environment:
139 APP_DOMAIN: ${PROSE_DOMAIN:-prose.sh}
140 APP_EMAIL: ${PROSE_EMAIL:-hello@pico.sh}
141 volumes:
142 - ${PROSE_CADDYFILE}:/etc/caddy/Caddyfile
143 - ./data/prose-caddy/data:/data
144 - ./data/prose-caddy/config:/config
145 ports:
146 - "${PROSE_HTTPS_V4:-443}:443"
147 - "${PROSE_HTTP_V4:-80}:80"
148 - "${PROSE_HTTPS_V6:-[::1]:443}:443"
149 - "${PROSE_HTTP_V6:-[::1]:80}:80"
150 profiles:
151 - prose
152 - caddy
153 - all
154 prose-web:
155 networks:
156 prose:
157 aliases:
158 - web
159 env_file:
160 - .env.prod
161 prose-ssh:
162 networks:
163 prose:
164 aliases:
165 - ssh
166 env_file:
167 - .env.prod
168 volumes:
169 - ./data/prose-ssh/data:/app/ssh_data
170 ports:
171 - "${PROSE_SSH_V4:-22}:2222"
172 - "${PROSE_SSH_V6:-[::1]:22}:2222"
173 imgs-caddy:
174 image: ghcr.io/picosh/pico/caddy:latest
175 restart: always
176 networks:
177 - imgs
178 env_file:
179 - .env.prod
180 environment:
181 APP_DOMAIN: ${IMGS_DOMAIN:-imgs.sh}
182 APP_EMAIL: ${IMGS_EMAIL:-hello@pico.sh}
183 volumes:
184 - ${IMGS_CADDYFILE}:/etc/caddy/Caddyfile
185 - ./data/imgs-caddy/data:/data
186 - ./data/imgs-caddy/config:/config
187 ports:
188 - "${IMGS_HTTPS_V4:-443}:443"
189 - "${IMGS_HTTP_V4:-80}:80"
190 - "${IMGS_HTTPS_V6:-[::1]:443}:443"
191 - "${IMGS_HTTP_V6:-[::1]:80}:80"
192 profiles:
193 - imgs
194 - caddy
195 - all
196 imgs-web:
197 networks:
198 imgs:
199 aliases:
200 - web
201 env_file:
202 - .env.prod
203 volumes:
204 - ./data/storage/data:/app/.storage
205 imgs-ssh:
206 networks:
207 imgs:
208 aliases:
209 - ssh
210 env_file:
211 - .env.prod
212 volumes:
213 - ./data/storage/data:/app/.storage
214 - ./data/imgs-ssh/data:/app/ssh_data
215 - ./data/imgs-tmp:/tmp
216 ports:
217 - "${IMGS_SSH_V4:-22}:2222"
218 - "${IMGS_SSH_V6:-[::1]:22}:2222"
219 pgs-caddy:
220 image: ghcr.io/picosh/pico/caddy:latest
221 restart: always
222 networks:
223 - pgs
224 env_file:
225 - .env.prod
226 environment:
227 APP_DOMAIN: ${PGS_DOMAIN:-pgs.sh}
228 APP_EMAIL: ${PGS_EMAIL:-hello@pico.sh}
229 volumes:
230 - ${PGS_CADDYFILE}:/etc/caddy/Caddyfile
231 - ./data/pgs-caddy/data:/data
232 - ./data/pgs-caddy/config:/config
233 ports:
234 - "${PGS_HTTPS_V4:-443}:443"
235 - "${PGS_HTTP_V4:-80}:80"
236 - "${PGS_HTTPS_V6:-[::1]:443}:443"
237 - "${PGS_HTTP_V6:-[::1]:80}:80"
238 profiles:
239 - pgs
240 - caddy
241 - all
242 pgs-web:
243 networks:
244 pgs:
245 aliases:
246 - web
247 env_file:
248 - .env.prod
249 volumes:
250 - ./data/storage/data:/app/.storage
251 pgs-ssh:
252 networks:
253 pgs:
254 aliases:
255 - ssh
256 env_file:
257 - .env.prod
258 volumes:
259 - ./data/storage/data:/app/.storage
260 - ./data/pgs-ssh/data:/app/ssh_data
261 - ./data/tmp:/tmp
262 ports:
263 - "${PGS_SSH_V4:-22}:2222"
264 - "${PGS_SSH_V6:-[::1]:22}:2222"
265 deploy:
266 resources:
267 limits:
268 memory: 3g
269 feeds-caddy:
270 image: ghcr.io/picosh/pico/caddy:latest
271 restart: always
272 networks:
273 - feeds
274 env_file:
275 - .env.prod
276 environment:
277 APP_DOMAIN: ${FEEDS_DOMAIN:-feeds.pico.sh}
278 APP_EMAIL: ${FEEDS_EMAIL:-hello@pico.sh}
279 volumes:
280 - ${FEEDS_CADDYFILE}:/etc/caddy/Caddyfile
281 - ./data/feeds-caddy/data:/data
282 - ./data/feeds-caddy/config:/config
283 ports:
284 - "${FEEDS_HTTPS_V4:-443}:443"
285 - "${FEEDS_HTTP_V4:-80}:80"
286 - "${FEEDS_HTTPS_V6:-[::1]:443}:443"
287 - "${FEEDS_HTTP_V6:-[::1]:80}:80"
288 profiles:
289 - feeds
290 - caddy
291 - all
292 feeds-web:
293 networks:
294 feeds:
295 aliases:
296 - web
297 env_file:
298 - .env.prod
299 feeds-ssh:
300 networks:
301 feeds:
302 aliases:
303 - ssh
304 env_file:
305 - .env.prod
306 volumes:
307 - ./data/feeds-ssh/data:/app/ssh_data
308 ports:
309 - "${FEEDS_SSH_V4:-22}:2222"
310 - "${FEEDS_SSH_V6:-[::1]:22}:2222"
311 pico-caddy:
312 image: ghcr.io/picosh/pico/caddy:latest
313 restart: always
314 networks:
315 - pico
316 env_file:
317 - .env.prod
318 environment:
319 APP_DOMAIN: ${PICO_DOMAIN:-pico.sh}
320 APP_EMAIL: ${PICO_EMAIL:-hello@pico.sh}
321 volumes:
322 - ${PICO_CADDYFILE}:/etc/caddy/Caddyfile
323 - ./data/pico-caddy/data:/data
324 - ./data/pico-caddy/config:/config
325 ports:
326 - "${PICO_HTTPS_V4:-443}:443"
327 - "${PICO_HTTP_V4:-80}:80"
328 - "${PICO_HTTPS_V6:-[::1]:443}:443"
329 - "${PICO_HTTP_V6:-[::1]:80}:80"
330 profiles:
331 - pico
332 - caddy
333 - all
334 pico-ssh:
335 networks:
336 pico:
337 aliases:
338 - ssh
339 env_file:
340 - .env.prod
341 volumes:
342 - ./data/pico-ssh/data:/app/ssh_data
343 ports:
344 - "${PICO_SSH_V4:-22}:2222"
345 - "${PICO_SSH_V6:-[::1]:22}:2222"
346
347networks:
348 default:
349 ipam:
350 driver: default
351 config:
352 - subnet: "172.101.0.0/24"
353 prose:
354 driver_opts:
355 com.docker.network.bridge.name: prose
356 ipam:
357 config:
358 - subnet: 172.18.0.0/16
359 pastes:
360 driver_opts:
361 com.docker.network.bridge.name: pastes
362 ipam:
363 config:
364 - subnet: 172.19.0.0/16
365 imgs:
366 driver_opts:
367 com.docker.network.bridge.name: imgs
368 ipam:
369 config:
370 - subnet: 172.21.0.0/16
371 feeds:
372 driver_opts:
373 com.docker.network.bridge.name: feeds
374 ipam:
375 config:
376 - subnet: 172.22.0.0/16
377 pgs:
378 driver_opts:
379 com.docker.network.bridge.name: pgs
380 ipam:
381 config:
382 - subnet: 172.23.0.0/16
383 pico:
384 driver_opts:
385 com.docker.network.bridge.name: pico
386 ipam:
387 config:
388 - subnet: 172.25.0.0/16
389 pubsub:
390 driver_opts:
391 com.docker.network.bridge.name: pubsub
392 ipam:
393 config:
394 - subnet: 172.27.0.0/16