From 7edd1c7d4285b6ff36787592fa0db25e8d30abf9 Mon Sep 17 00:00:00 2001 From: Maxime Vergez Date: Sat, 24 Sep 2022 10:57:38 +0200 Subject: [PATCH 01/15] feat(build): change dev to override To be easier for devs --- .gitignore | 3 --- ...ose.dev.yml => docker-compose.override.yml | 0 docker-compose.yml | 26 ++++++++++++++++--- 3 files changed, 23 insertions(+), 6 deletions(-) rename docker-compose.dev.yml => docker-compose.override.yml (100%) diff --git a/.gitignore b/.gitignore index 8e2f05f07..a53490404 100644 --- a/.gitignore +++ b/.gitignore @@ -262,9 +262,6 @@ frontend/src/custom/**/*.html data/tmp *.qgs -# Docker -docker-compose.override.yaml -docker-compose.override.yml # Backoffice secure access: config/backoffice_access diff --git a/docker-compose.dev.yml b/docker-compose.override.yml similarity index 100% rename from docker-compose.dev.yml rename to docker-compose.override.yml diff --git a/docker-compose.yml b/docker-compose.yml index 49a60149e..b4b495de4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,14 +4,27 @@ services: frontend: container_name: citizen-front depends_on: - - backend + backend: + condition: service_healthy + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:${FRONT_PORT-4000}/"] + interval: 5s + timeout: 5s + retries: 5 networks: - citizen-kane backend: container_name: citizen-back depends_on: - - db + db: + condition: service_healthy + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:${API_PORT-5002}/api/admin"] + interval: 10s + timeout: 5s + retries: 5 + start_period: 20s networks: - citizen-kane @@ -25,13 +38,20 @@ services: - POSTGRES_PASSWORD=${DB_PASSWORD-dbpwd} volumes: - citizen_data:/var/lib/postgresql/data/pgdata + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME} -h 127.0.0.1"] + interval: 5s + timeout: 5s + retries: 3 + start_period: 20s networks: - citizen-kane nginx: container_name: citizen-nginx depends_on: - - frontend + frontend: + condition: service_healthy volumes: - ./config/backoffice_htpasswd:/etc/nginx/conf/.htpasswd networks: From 307be908d9e60c6d7c7543807eb5707de12ad2d8 Mon Sep 17 00:00:00 2001 From: Maxime Vergez Date: Sat, 24 Sep 2022 11:29:58 +0200 Subject: [PATCH 02/15] docs(docker): update doc To match new docker-compose files --- docker.sh | 2 +- docs/docker.rst | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/docker.sh b/docker.sh index 097f45fd3..7ae7c58b3 100755 --- a/docker.sh +++ b/docker.sh @@ -56,4 +56,4 @@ docker-compose -f docker-compose.yml -f docker-compose.prod.yml down # Launch everything in detached mode docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --build -d -# DEV : docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d +# DEV : docker-compose up -d diff --git a/docs/docker.rst b/docs/docker.rst index d6c50cc2e..c3a731b67 100644 --- a/docs/docker.rst +++ b/docs/docker.rst @@ -84,17 +84,19 @@ Lancer les services Lancer ``./docker.sh`` -Lancer cette commande : ``docker-compose up`` +Lancer cette commande : ``docker-compose -f docker-compose.yml -f +docker-compose.prod.yml up`` Cette commande va construire les images et les monter une par une dans un conteneur qui leur est propre. +Il est très important de spécifier les 2 fichiers yml en production Il est possible de détacher le programme (comme un ``&`` sur Linux) et donc toute la sortie de la commande en lançant -``docker-compose up -d`` (detaché). +``docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d`` (detaché). Arrêter les services ^^^^^^^^^^^^^^^^^^^^^ -Pour "tuer" les services : ``docker-compose down`` +Pour "tuer" les services : ``docker-compose -f docker-compose.yml -f docker-compose.prod.yml down`` Contruire une ou plusieurs images ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -102,27 +104,30 @@ Contruire une ou plusieurs images **Situation 1** : le front a été modifié et j'ai besoin de reconstruire l'image -Lancer : ``docker-compose build frontend``. Cela va reconstruire le -frontend +Lancer : ``docker-compose -f docker-compose.yml -f docker-compose.prod.yml build +frontend``. Cela va reconstruire le frontend -Pour construire puis lancer directement le service : ``docker-compose up frontend --build`` +Pour construire puis lancer directement le service : ``docker-compose -f +docker-compose.yml -f docker-compose.prod.yml up frontend --build`` **Situation 2** : J'ai besoin de tout reconstruire -Lancer : ``docker-compose build`` -OU : ``docker-compose up --build`` pour tout reconstruire et relancer tous -les services +Lancer : ``docker-compose -f docker-compose.yml -f docker-compose.prod.yml build`` +OU : ``docker-compose -f docker-compose.yml -f docker-compose.prod.yml up +--build`` pour tout reconstruire et relancer tous les services Utiliser Docker dans Citizen en developpement ============================================= -Lancer ``docker-compose -f docker-compose.dev.yml up --build`` +Lancer ``docker-compose up --build`` Cela utilisera le ficher de configuration des services et construira les images pour le developpement (rechargement automatique du front, accès à tous les services et pas juste au proxy...). +En effet, par défaut, docker-compose prend comme fichiers ``docker-compose.yml`` +ainsi que ``docker-compose.override.yml`` Ce qu'il reste à améliorer From 21f121fcd435407fb10bc947eb200de84c2a249b Mon Sep 17 00:00:00 2001 From: Maxime Vergez Date: Sat, 24 Sep 2022 11:30:53 +0200 Subject: [PATCH 03/15] feat(docker): run flask db upgrade in entrypoint So that at each start up of the backend container the migrations will be run and the database will always be at its last version --- backend/Dockerfile | 2 +- backend/Dockerfile.dev | 2 +- backend/entrypoint.sh | 9 +++++++++ 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100755 backend/entrypoint.sh diff --git a/backend/Dockerfile b/backend/Dockerfile index 86b8fa3e0..e734b21b1 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -32,4 +32,4 @@ WORKDIR /app COPY --from=poetry $PYSETUP_PATH $PYSETUP_PATH COPY . . -CMD ["gunicorn", "-w", "2", "-b", "0.0.0.0:5002", "--timeout=30", "--reload", "wsgi:app"] +CMD ["./entrypoint.sh", "gunicorn", "-w", "2", "-b", "0.0.0.0:5002", "--timeout=30", "--reload", "wsgi:app"] diff --git a/backend/Dockerfile.dev b/backend/Dockerfile.dev index 89f065935..658d16c88 100644 --- a/backend/Dockerfile.dev +++ b/backend/Dockerfile.dev @@ -5,4 +5,4 @@ WORKDIR /app RUN pip install --upgrade pip \ && pip install poetry -CMD poetry install; poetry run python3 wsgi.py \ No newline at end of file +CMD poetry install; poetry run ./entrypoint.sh python3 wsgi.py \ No newline at end of file diff --git a/backend/entrypoint.sh b/backend/entrypoint.sh new file mode 100755 index 000000000..5d5bb2963 --- /dev/null +++ b/backend/entrypoint.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +set -o errexit +set -o pipefail +set -o nounset + +flask db upgrade + +exec "$@" \ No newline at end of file From f187eee738b87703f5f3682d3889bf89f8a726da Mon Sep 17 00:00:00 2001 From: Maxime Vergez Date: Sat, 24 Sep 2022 11:48:36 +0200 Subject: [PATCH 04/15] docs(docker): Some minor corrections --- docs/docker.rst | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/docs/docker.rst b/docs/docker.rst index c3a731b67..b961ee0a2 100644 --- a/docs/docker.rst +++ b/docs/docker.rst @@ -85,10 +85,9 @@ Lancer les services Lancer ``./docker.sh`` Lancer cette commande : ``docker-compose -f docker-compose.yml -f -docker-compose.prod.yml up`` +docker-compose.prod.yml up``. Cette commande va construire les images et les monter une par une dans un conteneur qui leur est propre. -Il est très important de spécifier les 2 fichiers yml en production Il est possible de détacher le programme (comme un ``&`` sur Linux) et donc toute la sortie de la commande en lançant @@ -105,7 +104,7 @@ Contruire une ou plusieurs images l'image Lancer : ``docker-compose -f docker-compose.yml -f docker-compose.prod.yml build -frontend``. Cela va reconstruire le frontend +frontend``. Cela va reconstruire le frontend. Pour construire puis lancer directement le service : ``docker-compose -f docker-compose.yml -f docker-compose.prod.yml up frontend --build`` @@ -114,7 +113,7 @@ docker-compose.yml -f docker-compose.prod.yml up frontend --build`` Lancer : ``docker-compose -f docker-compose.yml -f docker-compose.prod.yml build`` OU : ``docker-compose -f docker-compose.yml -f docker-compose.prod.yml up ---build`` pour tout reconstruire et relancer tous les services +--build`` pour tout reconstruire et relancer tous les services. Utiliser Docker dans Citizen en developpement @@ -127,7 +126,7 @@ et construira les images pour le developpement (rechargement automatique du front, accès à tous les services et pas juste au proxy...). En effet, par défaut, docker-compose prend comme fichiers ``docker-compose.yml`` -ainsi que ``docker-compose.override.yml`` +ainsi que ``docker-compose.override.yml``. Ce qu'il reste à améliorer From a35cebad8025f69ae86b24dbc4c867cfc95bcc98 Mon Sep 17 00:00:00 2001 From: Etienne Delclaux Date: Mon, 18 Dec 2023 10:03:02 +0100 Subject: [PATCH 05/15] feat: add makefile to manipulate the docker commands --- .gitignore | 3 +++ Makefile | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 Makefile diff --git a/.gitignore b/.gitignore index a53490404..28c98b008 100644 --- a/.gitignore +++ b/.gitignore @@ -266,3 +266,6 @@ data/tmp # Backoffice secure access: config/backoffice_access config/backoffice_htpasswd + +# local makefiles +local.mk \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 000000000..60bd35ebd --- /dev/null +++ b/Makefile @@ -0,0 +1,48 @@ +# Executables (local) +DOCKER_COMP = docker compose +DOCKER = docker + +# Local makefile targets +-include local.mk + +# Misc +.DEFAULT_GOAL = help +.PHONY = help build up start down logs sh + +## —— 🎵 🐳 The docker Makefile 🐳 🎵 —————————————————————————————————— +help: ## Outputs this help screen + @grep -E '(^[a-zA-Z0-9_-]+:.*?##.*$$)|(^##)' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}{printf "\033[32m%-30s\033[0m %s\n", $$1, $$2}' | sed -e 's/\[32m##/[33m/' + +## —— Docker 🐳 ———————————————————————————————————————————————————————————————— +build: ## Builds the Docker images + @$(DOCKER_COMP) --env-file .env build --pull --no-cache + +# up-with-update: down-remove-all +# @$(DOCKER_COMP) --env-file .env -f docker-compose.yml -f docker-compose.override.yml up -d --build + +up: ## Start the docker hub in detached mode (no logs) + @$(DOCKER_COMP) up --detach + +start: build-dev up ## Build and start the containers + +down: ## Stop the docker hub + @$(DOCKER_COMP) down --remove-orphans + +restart: down up ## Down and up + +down-remove-all: ## Stop and remove the docker hub + @$(DOCKER_COMP) down --remove-orphans --rmi all -v + +dev-remove: + @$(DOCKER_COMP) rm -fvs + +volume-prune: + @$(DOCKER) volume prune -f + +docker-reset-all: down-remove-all dev-remove volume-prune start + +restart-app: ## Start the docker hub in detached mode (no logs) + @$(DOCKER_COMP) restart app + +logs: ## Show live logs + @$(DOCKER_COMP) logs --tail=0 --follow From 6587c0b78ed348ecd86fb1edad575b8d6f1ce5fe Mon Sep 17 00:00:00 2001 From: Maxime Vergez Date: Mon, 18 Dec 2023 10:35:17 +0100 Subject: [PATCH 06/15] build: fix default variables --- docker-compose.override.yml | 8 ++++---- docker-compose.prod.yml | 2 +- docker-compose.yml | 12 ++++++------ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 5bad8ab5e..6979c9301 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -9,7 +9,7 @@ services: volumes: - ./frontend:/app ports: - - "${FRONT_PORT-4000}:${FRONT_PORT-4000}" + - "${FRONT_PORT:-4000}:4000" backend: image: gnc-back-dev @@ -23,15 +23,15 @@ services: - ./external_modules:/external_modules - ./media:/media ports: - - "${API_PORT-5002}:${API_PORT-5002}" + - "${API_PORT:-5002}:5002" db: ports: - - "${DB_PORT-8465}:${DB_PORT-5432}" + - "${DB_PORT:-8465}:5432" nginx: image: nginx volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf ports: - - "${NGINX_PORT-80}:80" + - "${NGINX_PORT:-80}:80" diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 00c864615..b1ecfa4e1 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -24,4 +24,4 @@ services: context: ./nginx dockerfile: Dockerfile ports: - - "${NGINX_PORT-80}:80" + - "${NGINX_PORT:-80}:80" diff --git a/docker-compose.yml b/docker-compose.yml index b4b495de4..d8693706a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,7 +7,7 @@ services: backend: condition: service_healthy healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:${FRONT_PORT-4000}/"] + test: ["CMD", "curl", "-f", "http://localhost:4000/"] interval: 5s timeout: 5s retries: 5 @@ -20,7 +20,7 @@ services: db: condition: service_healthy healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:${API_PORT-5002}/api/admin"] + test: ["CMD", "curl", "-f", "http://localhost:5002/api/admin"] interval: 10s timeout: 5s retries: 5 @@ -33,13 +33,13 @@ services: image: postgis/postgis:14-master environment: - PGDATA=/var/lib/postgresql/data/pgdata - - POSTGRES_DB=${DB_NAME-dbname} - - POSTGRES_USER=${DB_USER-dbuser} - - POSTGRES_PASSWORD=${DB_PASSWORD-dbpwd} + - POSTGRES_DB=${DB_NAME:-dbname} + - POSTGRES_USER=${DB_USER:-dbuser} + - POSTGRES_PASSWORD=${DB_PASSWORD:-dbpwd} volumes: - citizen_data:/var/lib/postgresql/data/pgdata healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME} -h 127.0.0.1"] + test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-dbuser} -d ${DB_NAME:-dbname} -h 127.0.0.1"] interval: 5s timeout: 5s retries: 3 From 600dc07847dbebc3605121fd9b606beef0cfa302 Mon Sep 17 00:00:00 2001 From: Maxime Vergez Date: Mon, 18 Dec 2023 10:35:30 +0100 Subject: [PATCH 07/15] build: fix url by using compose services --- nginx/nginx.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nginx/nginx.conf b/nginx/nginx.conf index 0d9ca46e3..92b43c844 100644 --- a/nginx/nginx.conf +++ b/nginx/nginx.conf @@ -17,12 +17,12 @@ http { server_name 0.0.0.0; location / { - proxy_pass http://citizen-front:4000; + proxy_pass http://frontend:4000; proxy_set_header Host $host; } location /api { - proxy_pass http://citizen-back:5002/api; + proxy_pass http://backend:5002/api; } location /api/admin { From ec7c73b2621a7b4cf0d1bf6a4c4c966f5203274b Mon Sep 17 00:00:00 2001 From: Maxime Vergez Date: Mon, 18 Dec 2023 11:17:47 +0100 Subject: [PATCH 08/15] build: remove container-name --- docker-compose.yml | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index d8693706a..20af772db 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,7 +2,6 @@ version: "3.4" services: frontend: - container_name: citizen-front depends_on: backend: condition: service_healthy @@ -12,10 +11,9 @@ services: timeout: 5s retries: 5 networks: - - citizen-kane + - kane backend: - container_name: citizen-back depends_on: db: condition: service_healthy @@ -26,10 +24,9 @@ services: retries: 5 start_period: 20s networks: - - citizen-kane + - kane db: - container_name: citizen-db image: postgis/postgis:14-master environment: - PGDATA=/var/lib/postgresql/data/pgdata @@ -37,7 +34,7 @@ services: - POSTGRES_USER=${DB_USER:-dbuser} - POSTGRES_PASSWORD=${DB_PASSWORD:-dbpwd} volumes: - - citizen_data:/var/lib/postgresql/data/pgdata + - data:/var/lib/postgresql/data/pgdata healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-dbuser} -d ${DB_NAME:-dbname} -h 127.0.0.1"] interval: 5s @@ -45,20 +42,19 @@ services: retries: 3 start_period: 20s networks: - - citizen-kane + - kane nginx: - container_name: citizen-nginx depends_on: frontend: condition: service_healthy volumes: - ./config/backoffice_htpasswd:/etc/nginx/conf/.htpasswd networks: - - citizen-kane + - kane networks: - citizen-kane: + kane: external: false volumes: - citizen_data: + data: From dbc08d58af880f94ad840bef3904e72d8c0a8281 Mon Sep 17 00:00:00 2001 From: Maxime Vergez Date: Mon, 18 Dec 2023 11:20:23 +0100 Subject: [PATCH 09/15] build: increase retries for slow hosts --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 20af772db..bf87b89ca 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,7 +39,7 @@ services: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-dbuser} -d ${DB_NAME:-dbname} -h 127.0.0.1"] interval: 5s timeout: 5s - retries: 3 + retries: 5 start_period: 20s networks: - kane From 7dd9f4a652332f86a3f567ad42e85c13331b3b89 Mon Sep 17 00:00:00 2001 From: Maxime Vergez Date: Mon, 18 Dec 2023 12:12:44 +0100 Subject: [PATCH 10/15] build: add .env and do not ignore it --- .env | 1 + .gitignore | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 .env diff --git a/.env b/.env new file mode 100644 index 000000000..6d9547e86 --- /dev/null +++ b/.env @@ -0,0 +1 @@ +COMPOSE_PROJECT_NAME=citizen \ No newline at end of file diff --git a/.gitignore b/.gitignore index 28c98b008..2d6f1bcb4 100644 --- a/.gitignore +++ b/.gitignore @@ -56,7 +56,7 @@ typings/ .yarn-integrity # dotenv environment variables file -.env +.env.* # next.js build output .next @@ -190,7 +190,6 @@ celerybeat-schedule *.sage.py # Environments -.env .venv env/ venv From 508517fbccc926870817043d67a5615e6ce5febe Mon Sep 17 00:00:00 2001 From: Etienne Delclaux Date: Mon, 18 Dec 2023 12:17:46 +0100 Subject: [PATCH 11/15] fix: gitignore: ignore only .env.local --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2d6f1bcb4..a5647c713 100644 --- a/.gitignore +++ b/.gitignore @@ -56,7 +56,7 @@ typings/ .yarn-integrity # dotenv environment variables file -.env.* +.env.local # next.js build output .next From b0aafb51eea3bb07e237dc4bf0edd6e8dce42c98 Mon Sep 17 00:00:00 2001 From: Etienne Delclaux Date: Mon, 18 Dec 2023 14:48:28 +0100 Subject: [PATCH 12/15] feat: makefile handles conditional env behavior --- Makefile | 56 +++++++++++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/Makefile b/Makefile index 60bd35ebd..f60ae5707 100644 --- a/Makefile +++ b/Makefile @@ -1,48 +1,58 @@ +# Misc +.DEFAULT_GOAL = help +.PHONY = help build up start down logs sh + # Executables (local) DOCKER_COMP = docker compose DOCKER = docker +DOCKER_COMP_ENV = --env-file .env +DOCKER_COMP_FILES = -f docker-compose.yml -f docker-compose.override.yml -# Local makefile targets +# Include "local" configuration -include local.mk +-include .env.local +ifneq (,$(wildcard ./.env.local)) +DOCKER_COMP_ENV = --env-file .env --env-file .env.local +endif -# Misc -.DEFAULT_GOAL = help -.PHONY = help build up start down logs sh +# Include "production" configuration +include production.mk ## —— 🎵 🐳 The docker Makefile 🐳 🎵 —————————————————————————————————— help: ## Outputs this help screen @grep -E '(^[a-zA-Z0-9_-]+:.*?##.*$$)|(^##)' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}{printf "\033[32m%-30s\033[0m %s\n", $$1, $$2}' | sed -e 's/\[32m##/[33m/' ## —— Docker 🐳 ———————————————————————————————————————————————————————————————— -build: ## Builds the Docker images - @$(DOCKER_COMP) --env-file .env build --pull --no-cache - -# up-with-update: down-remove-all -# @$(DOCKER_COMP) --env-file .env -f docker-compose.yml -f docker-compose.override.yml up -d --build +build: build-dev ## Builds the Docker images -up: ## Start the docker hub in detached mode (no logs) - @$(DOCKER_COMP) up --detach +up: up-dev ## Start the docker hub in detached mode (no logs) -start: build-dev up ## Build and start the containers +start: build up ## Build and start the containers down: ## Stop the docker hub @$(DOCKER_COMP) down --remove-orphans -restart: down up ## Down and up - down-remove-all: ## Stop and remove the docker hub @$(DOCKER_COMP) down --remove-orphans --rmi all -v -dev-remove: +dev-remove: ## remove fvs @$(DOCKER_COMP) rm -fvs -volume-prune: +volume-prune: ## volume prune @$(DOCKER) volume prune -f -docker-reset-all: down-remove-all dev-remove volume-prune start - -restart-app: ## Start the docker hub in detached mode (no logs) - @$(DOCKER_COMP) restart app - -logs: ## Show live logs - @$(DOCKER_COMP) logs --tail=0 --follow +docker-reset-all: down-remove-all dev-remove volume-prune start ## Remove all, prune volumes and + +build-dev: ## Builds the Docker images if ENV variable is set +ifdef ENV_LOCAL_DEFINED + @$(DOCKER_COMP) $(DOCKER_COMP_ENV) $(DOCKER_COMP_FILES) build --pull --no-cache +else + @$(DOCKER_COMP) $(DOCKER_COMP_ENV) $(DOCKER_COMP_FILES) build --pull --no-cache +endif + +up-dev: ## Builds the Docker images if ENV variable is set +ifdef ENV_LOCAL_DEFINED + @$(DOCKER_COMP) $(DOCKER_COMP_ENV) $(DOCKER_COMP_FILES) up --detach --build +else + @$(DOCKER_COMP) $(DOCKER_COMP_ENV) $(DOCKER_COMP_FILES) up --detach --build +endif \ No newline at end of file From 53fec8c227340e1bd2fd4ca44f78984860541e1f Mon Sep 17 00:00:00 2001 From: Etienne Delclaux Date: Mon, 18 Dec 2023 14:53:42 +0100 Subject: [PATCH 13/15] lint: docker-compose files --- docker-compose.override.yml | 10 +++++----- docker-compose.prod.yml | 4 ++-- docker-compose.yml | 10 +++++----- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docker-compose.override.yml b/docker-compose.override.yml index 6979c9301..b1608d491 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -1,4 +1,4 @@ -version: "3.4" +version: '3.4' services: frontend: @@ -9,7 +9,7 @@ services: volumes: - ./frontend:/app ports: - - "${FRONT_PORT:-4000}:4000" + - '${FRONT_PORT:-4000}:4000' backend: image: gnc-back-dev @@ -23,15 +23,15 @@ services: - ./external_modules:/external_modules - ./media:/media ports: - - "${API_PORT:-5002}:5002" + - '${API_PORT:-5002}:5002' db: ports: - - "${DB_PORT:-8465}:5432" + - '${DB_PORT:-8465}:5432' nginx: image: nginx volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf ports: - - "${NGINX_PORT:-80}:80" + - '${NGINX_PORT:-80}:80' diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index b1ecfa4e1..723b1848d 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -1,4 +1,4 @@ -version: "3.4" +version: '3.4' services: frontend: @@ -24,4 +24,4 @@ services: context: ./nginx dockerfile: Dockerfile ports: - - "${NGINX_PORT:-80}:80" + - '${NGINX_PORT:-80}:80' diff --git a/docker-compose.yml b/docker-compose.yml index bf87b89ca..6cb30fea5 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,4 +1,4 @@ -version: "3.4" +version: '3.4' services: frontend: @@ -6,7 +6,7 @@ services: backend: condition: service_healthy healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:4000/"] + test: ['CMD', 'curl', '-f', 'http://localhost:4000/'] interval: 5s timeout: 5s retries: 5 @@ -18,7 +18,7 @@ services: db: condition: service_healthy healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:5002/api/admin"] + test: ['CMD', 'curl', '-f', 'http://localhost:5002/api/admin'] interval: 10s timeout: 5s retries: 5 @@ -35,8 +35,8 @@ services: - POSTGRES_PASSWORD=${DB_PASSWORD:-dbpwd} volumes: - data:/var/lib/postgresql/data/pgdata - healthcheck: - test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-dbuser} -d ${DB_NAME:-dbname} -h 127.0.0.1"] + healthcheck: + test: ['CMD-SHELL', 'pg_isready -U ${DB_USER:-dbuser} -d ${DB_NAME:-dbname} -h 127.0.0.1'] interval: 5s timeout: 5s retries: 5 From 7157d293b239a118a03f744f3368fb95e85ddd1d Mon Sep 17 00:00:00 2001 From: Etienne Delclaux Date: Mon, 18 Dec 2023 15:05:40 +0100 Subject: [PATCH 14/15] fix: add missing production.mk --- production.mk | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 production.mk diff --git a/production.mk b/production.mk new file mode 100644 index 000000000..4594a444f --- /dev/null +++ b/production.mk @@ -0,0 +1,5 @@ +production-build: + @$(DOCKER_COMP) --env-file .env --env-file .env.prod -f docker-compose.yml -f docker-compose.prod.yml build --pull --no-cache + +production-up: ## Start the docker hub in detached mode (no logs) + @$(DOCKER_COMP) --env-file .env --env-file .env.prod -f docker-compose.yml -f docker-compose.prod.yml up --detach From 94f5c0210c9344ebb235bb6a183239d686b30f16 Mon Sep 17 00:00:00 2001 From: Etienne Delclaux Date: Mon, 18 Dec 2023 15:31:38 +0100 Subject: [PATCH 15/15] fix: dockers.sh : adjust to multi .env config --- docker.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docker.sh b/docker.sh index 7ae7c58b3..e5e04b7a1 100755 --- a/docker.sh +++ b/docker.sh @@ -52,8 +52,9 @@ mkdir -p media cp -r frontend/src/assets/* media/. # Down everything -docker-compose -f docker-compose.yml -f docker-compose.prod.yml down +docker-compose --env-file .env --env-file .env.prod -f docker-compose.yml -f docker-compose.prod.yml down + # Launch everything in detached mode -docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --build -d +docker-compose --env-file .env --env-file .env.prod -f docker-compose.yml -f docker-compose.prod.yml up --build -d # DEV : docker-compose up -d