repos / pico

pico services - prose.sh, pastes.sh, imgs.sh, feeds.sh, pgs.sh
git clone https://github.com/picosh/pico.git

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