ConceptPortal-public/docker-compose-prod.yml

111 lines
2.6 KiB
YAML
Raw Permalink Normal View History

2023-08-11 16:04:26 +03:00
name: concept-portal
2023-07-15 17:46:19 +03:00
volumes:
postgres_volume:
2023-08-11 16:04:26 +03:00
name: "portal-data"
2023-07-15 17:46:19 +03:00
django_static_volume:
2023-08-11 16:04:26 +03:00
name: "portal-static"
2023-07-15 17:46:19 +03:00
django_media_volume:
2023-08-11 16:04:26 +03:00
name: "portal-media"
2023-09-14 17:33:34 +03:00
cerbot_www_volume:
name: "portal-certbot-serve"
cerbot_conf_volume:
name: "portal-certbot-config"
2023-07-15 17:46:19 +03:00
networks:
default:
name: concept-api-net
2023-08-08 15:33:23 +03:00
secrets:
django_key:
file: ./secrets/django_key.txt
db_password:
file: ./secrets/db_password.txt
2024-02-25 20:55:30 +03:00
email_host:
file: ./secrets/email_host.txt
email_user:
file: ./secrets/email_user.txt
email_password:
file: ./secrets/email_password.txt
2023-08-08 15:33:23 +03:00
2023-07-15 17:46:19 +03:00
services:
frontend:
2023-08-11 16:04:26 +03:00
container_name: portal-frontend
2023-07-15 17:46:19 +03:00
restart: always
depends_on:
- backend
2024-02-25 20:55:30 +03:00
build:
2023-07-15 17:46:19 +03:00
context: ./rsconcept/frontend
args:
BUILD_TYPE: production
2023-08-09 16:55:53 +03:00
expose:
- 3000
2023-07-15 17:46:19 +03:00
command: serve -s /home/node -l 3000
backend:
2023-08-11 16:04:26 +03:00
container_name: portal-backend
2023-07-15 17:46:19 +03:00
restart: always
depends_on:
- postgresql-db
2023-08-08 15:33:23 +03:00
secrets:
- db_password
- django_key
2024-02-25 20:55:30 +03:00
- email_host
- email_user
- email_password
2023-07-15 17:46:19 +03:00
build:
context: ./rsconcept/backend
2023-08-08 15:33:23 +03:00
env_file: ./rsconcept/backend/.env.prod
environment:
SECRET_KEY: /run/secrets/django_key
DB_PASSWORD: /run/secrets/db_password
2024-02-25 20:55:30 +03:00
EMAIL_HOST: /run/secrets/email_host
EMAIL_HOST_USER: /run/secrets/email_user
EMAIL_HOST_PASSWORD: /run/secrets/email_password
2023-08-08 18:14:30 +03:00
expose:
- 8000
2023-07-15 17:46:19 +03:00
volumes:
- django_static_volume:/home/app/web/static
- django_media_volume:/home/app/web/media
2024-02-25 20:55:30 +03:00
command: gunicorn -w 3 project.wsgi --bind 0.0.0.0:8000
2023-07-15 17:46:19 +03:00
postgresql-db:
2023-08-11 16:04:26 +03:00
container_name: portal-db
2023-07-15 17:46:19 +03:00
restart: always
2024-06-04 01:43:04 +03:00
image: postgres:16-alpine
2023-08-08 15:33:23 +03:00
secrets:
- db_password
env_file: ./postgresql/.env.prod
environment:
POSTGRES_PASSWORD_FILE: /run/secrets/db_password
2023-07-15 17:46:19 +03:00
volumes:
- postgres_volume:/var/lib/postgresql/data
2023-09-14 17:33:34 +03:00
certbot:
container_name: portal-certbot
2023-12-04 14:41:29 +03:00
restart: no
2023-09-14 17:33:34 +03:00
image: certbot/certbot:latest
volumes:
- cerbot_www_volume:/var/www/certbot/:rw
- cerbot_conf_volume:/etc/letsencrypt/:rw
2023-07-15 17:46:19 +03:00
nginx:
2023-08-11 16:04:26 +03:00
container_name: portal-router
2023-07-15 17:46:19 +03:00
restart: always
build:
context: ./nginx
args:
BUILD_TYPE: production
2023-07-15 17:46:19 +03:00
ports:
2023-09-14 17:33:34 +03:00
- 80:80
- 443:443
2023-08-08 18:14:30 +03:00
depends_on:
- backend
2024-03-15 14:40:47 +03:00
- frontend
2024-02-25 20:55:30 +03:00
command: '/bin/sh -c ''while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g "daemon off;"'''
2023-07-15 17:46:19 +03:00
volumes:
- django_static_volume:/var/www/static
- django_media_volume:/var/www/media
2023-09-14 17:33:34 +03:00
- cerbot_www_volume:/var/www/certbot/:ro
- cerbot_conf_volume:/etc/nginx/ssl/:ro