On met en place la version prod

This commit is contained in:
Jean-Marie Favreau 2023-11-15 12:01:35 +01:00
parent 47615140cb
commit 362013d0df
8 changed files with 22 additions and 53 deletions

View File

@ -59,6 +59,9 @@ build-dev-log:
build-prod: build-prod:
DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose -f docker-compose.prod.yml up --build -d DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose -f docker-compose.prod.yml up --build -d
build-prod-log:
DOCKER_BUILDKIT=1 COMPOSE_DOCKER_CLI_BUILD=1 docker-compose -f docker-compose.prod.yml up --build
stop-dev: stop-dev:
@docker-compose -f docker-compose.yml down @docker-compose -f docker-compose.yml down

0
deployment/scripts/backend/start.sh Normal file → Executable file
View File

0
deployment/scripts/celery/start-beat.sh Normal file → Executable file
View File

0
deployment/scripts/celery/start-worker.sh Normal file → Executable file
View File

View File

@ -0,0 +1,7 @@
wait_for_it=$(dirname "$0")/wait-for-it.sh
chmod +x $wait_for_it
chmod +x $1
$wait_for_it -h $POSTGRES_HOST -p $POSTGRES_PORT -- $1

View File

@ -1,4 +1,4 @@
version: '3.9' version: '3.7'
services: services:
backend: backend:
@ -15,18 +15,12 @@ services:
- ./deployment/scripts:/app/deployment/scripts/ - ./deployment/scripts:/app/deployment/scripts/
- static_files:/usr/src/app/static - static_files:/usr/src/app/static
- media_files:/usr/src/app/media - media_files:/usr/src/app/media
labels: env_file: .env.prod
- "traefik.enable=true"
- "traefik.http.routers.${APP_NAME}-backend.rule=Host(`${APP_DOMAIN}`)"
- "traefik.http.routers.${APP_NAME}-backend.entrypoints=web"
- "traefik.http.services.${APP_NAME}-backend.loadbalancer.server.port=${APP_PORT:-8000}"
env_file: .env
expose: expose:
- "${APP_PORT:-8000}" - "${APP_PORT:-8000}"
depends_on: depends_on:
db: - db
condition: service_healthy command: [ "/bin/sh", "/app/deployment/scripts/wait-db.sh", "/app/deployment/scripts/backend/start.sh" ]
command: [ "/bin/sh", "/app/deployment/scripts/backend/start.sh" ]
db: db:
image: postgres:15.2-alpine image: postgres:15.2-alpine
@ -34,7 +28,7 @@ services:
hostname: "${POSTGRES_HOST:-db}" hostname: "${POSTGRES_HOST:-db}"
volumes: volumes:
- postgres_data_dir:/var/lib/postgresql/data/ - postgres_data_dir:/var/lib/postgresql/data/
env_file: .env env_file: .env.prod
expose: expose:
- "${POSTGRES_PORT:-5432}" - "${POSTGRES_PORT:-5432}"
shm_size: 1g shm_size: 1g
@ -61,17 +55,17 @@ services:
- ./deployment/scripts:/app/deployment/scripts/ - ./deployment/scripts:/app/deployment/scripts/
- static_files:/usr/src/app/static - static_files:/usr/src/app/static
- media_files:/usr/src/app/media - media_files:/usr/src/app/media
env_file: .env env_file: .env.prod
depends_on: depends_on:
- db - db
- redis - redis
- backend - backend
command: [ "/bin/sh", "/app/deployment/scripts/celery/start-worker.sh" ] command: [ "/bin/sh", "/app/deployment/scripts/wait-db.sh", "/app/deployment/scripts/celery/start-worker.sh" ]
celery-beat: celery-beat:
<<: *celery-worker <<: *celery-worker
container_name: "${APP_NAME}-celery-beat" container_name: "${APP_NAME}-celery-beat"
command: [ "/bin/sh", "/app/deployment/scripts/celery/start-beat.sh" ] command: [ "/bin/sh", "/app/deployment/scripts/wait-db.sh", "/app/deployment/scripts/celery/start-beat.sh" ]
nginx: nginx:
image: nginx:latest image: nginx:latest
@ -80,46 +74,11 @@ services:
- ./deployment/scripts/nginx/nginx.conf:/etc/nginx/nginx.conf:ro - ./deployment/scripts/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- static_files:/usr/src/app/static - static_files:/usr/src/app/static
- media_files:/usr/src/app/media - media_files:/usr/src/app/media
labels: env_file: .env.prod
- "traefik.enable=true" ports:
- "traefik.http.routers.${APP_NAME}-nginx.rule=Host(`${APP_DOMAIN}`)" - 6380:80
- "traefik.http.routers.${APP_NAME}-nginx.entrypoints=websecure"
- "traefik.http.services.${APP_NAME}-nginx.loadbalancer.server.port=80"
- "traefik.http.routers.${APP_NAME}-nginx.tls=true"
- "traefik.http.routers.${APP_NAME}-nginx.tls.certresolver=myresolver"
expose:
- "80"
- "443"
depends_on: depends_on:
- backend - backend
- traefik
traefik:
image: traefik:v2.5
container_name: "${APP_NAME}-traefik"
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--providers.docker.watch=true"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entryPoint.scheme=https"
- "--entrypoints.web.http.redirections.entrypoint.permanent=true"
- "--api.dashboard=true"
- "--certificatesresolvers.myresolver.acme.httpchallenge=true"
- "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.myresolver.acme.email=${LETSENCRYPT_EMAIL}"
- "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
- "--log.level=DEBUG"
- "--accesslog=true"
- "--tracing=true"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
- "./letsencrypt:/letsencrypt"
volumes: volumes:
static_files: static_files:

View File

@ -1,4 +1,4 @@
version: '3.9' version: '3.7'
services: services:
backend: backend: