feat(infra,ci): deux environnements rec et prod sur la VM ENI, déployés par un runner auto-hébergé
Un projet Compose par environnement sur la même machine : ports du proxy et origine publique en variables dans docker-compose.prod.yml, réglage mémoire des deux bases TimescaleDB et du webserver Airflow. Le workflow deploy.yml déploie dev en recette et main en production depuis un runner installé sur la VM, jamais sur pull_request. scripts/provision-host.sh prépare les deux dossiers, secrets et certificats compris, sans rien démarrer. L'image frontend quitte dhi.io/nginx, registre authentifié dont personne n'a l'accès, pour nginx:1.28-alpine : elle n'avait jamais été construite. ADR 0009, vues infra et CI/CD, README et .env.example mis à jour. Refs #21, #22
This commit is contained in:
+11
-4
@@ -5,6 +5,8 @@
|
||||
# moyen de dépublier 8000 et 3000 : sans lui, l'API resterait joignable en clair à côté du proxy.
|
||||
# Piège : pas de `:?` sur `PUBLIC_HOST`. Compose interpole tout le fichier, y compris pour
|
||||
# `stop` et `logs` : la garde vit dans `make stack-up`, qui la compare au certificat servi.
|
||||
# Pourquoi : ports du proxy et origine publique en variables, pour que deux environnements
|
||||
# cohabitent sur la même machine, chacun dans son projet Compose (ADR 0009).
|
||||
|
||||
name: enervision
|
||||
|
||||
@@ -12,6 +14,9 @@ services:
|
||||
db:
|
||||
ports: !override
|
||||
- "127.0.0.1:${POSTGRES_PORT:-5433}:5432"
|
||||
environment:
|
||||
TS_TUNE_MEMORY: ${TS_TUNE_MEMORY:-2GB}
|
||||
TS_TUNE_NUM_CPUS: ${TS_TUNE_NUM_CPUS:-2}
|
||||
|
||||
mailpit:
|
||||
ports: !override
|
||||
@@ -20,6 +25,8 @@ services:
|
||||
airflow-webserver:
|
||||
ports: !override
|
||||
- "127.0.0.1:${AIRFLOW_PORT:-8080}:8080"
|
||||
environment:
|
||||
AIRFLOW__WEBSERVER__WORKERS: ${AIRFLOW_WEBSERVER_WORKERS:-2}
|
||||
|
||||
backend:
|
||||
ports: !reset null
|
||||
@@ -37,8 +44,8 @@ services:
|
||||
APP_ENV: prod
|
||||
APP_DEBUG: "false"
|
||||
APP_TRUST_PROXY_HEADERS: "true"
|
||||
APP_CORS_ORIGINS: https://${PUBLIC_HOST:-enervision.local}
|
||||
APP_FRONTEND_RESET_PASSWORD_URL: https://${PUBLIC_HOST:-enervision.local}/reset-password
|
||||
APP_CORS_ORIGINS: ${PUBLIC_ORIGIN:-https://${PUBLIC_HOST:-enervision.local}}
|
||||
APP_FRONTEND_RESET_PASSWORD_URL: ${PUBLIC_ORIGIN:-https://${PUBLIC_HOST:-enervision.local}}/reset-password
|
||||
|
||||
frontend:
|
||||
ports: !reset null
|
||||
@@ -51,8 +58,8 @@ services:
|
||||
frontend:
|
||||
condition: service_started
|
||||
ports:
|
||||
- "80:80"
|
||||
- "443:443"
|
||||
- "${PROXY_HTTP_PORT:-80}:80"
|
||||
- "${PROXY_HTTPS_PORT:-443}:443"
|
||||
volumes:
|
||||
- ./infra/proxy/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
- ./infra/proxy/conf.d:/etc/nginx/conf.d:ro
|
||||
|
||||
Reference in New Issue
Block a user