refactor: domaines et router Traefik configurables par env vars

APP_ENV, DOMAIN_WEB, DOMAIN_WEB_ALT, DOMAIN_API, DOMAIN_PGADMIN
permettent de déployer prod et dev sur le même Traefik sans conflit.
CORS_ORIGINS aussi injecté directement dans le service api.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Nicolas Fryder 2026-06-27 12:38:52 +02:00
parent 06a5bf2ef8
commit d08584704f

View file

@ -39,11 +39,11 @@ services:
labels: labels:
- traefik.enable=true - traefik.enable=true
- traefik.docker.network=coolify - traefik.docker.network=coolify
- traefik.http.routers.pgadmin.rule=Host(`pgadmin.bm.nicolasfryder.ovh`) - traefik.http.routers.${APP_ENV:-prod}-pgadmin.rule=Host(`${DOMAIN_PGADMIN:-pgadmin.bm.nicolasfryder.ovh}`)
- traefik.http.routers.pgadmin.entrypoints=https - traefik.http.routers.${APP_ENV:-prod}-pgadmin.entrypoints=https
- traefik.http.routers.pgadmin.tls=true - traefik.http.routers.${APP_ENV:-prod}-pgadmin.tls=true
- traefik.http.routers.pgadmin.tls.certresolver=letsencrypt - traefik.http.routers.${APP_ENV:-prod}-pgadmin.tls.certresolver=letsencrypt
- traefik.http.services.pgadmin.loadbalancer.server.port=80 - traefik.http.services.${APP_ENV:-prod}-pgadmin.loadbalancer.server.port=80
api: api:
build: build:
@ -52,17 +52,18 @@ services:
PORT: "3000" PORT: "3000"
DATABASE_URL: ${DATABASE_URL} DATABASE_URL: ${DATABASE_URL}
BM_IMPORT_TOKEN: ${BM_IMPORT_TOKEN} BM_IMPORT_TOKEN: ${BM_IMPORT_TOKEN}
CORS_ORIGINS: ${CORS_ORIGINS:-https://metalfrom.eu,https://www.metalfrom.eu}
networks: networks:
- bm_internal - bm_internal
- coolify - coolify
labels: labels:
- traefik.enable=true - traefik.enable=true
- traefik.docker.network=coolify - traefik.docker.network=coolify
- traefik.http.routers.bm-api.rule=Host(`bm.nicolasfryder.ovh`) - traefik.http.routers.${APP_ENV:-prod}-api.rule=Host(`${DOMAIN_API:-bm.nicolasfryder.ovh}`)
- traefik.http.routers.bm-api.entrypoints=https - traefik.http.routers.${APP_ENV:-prod}-api.entrypoints=https
- traefik.http.routers.bm-api.tls=true - traefik.http.routers.${APP_ENV:-prod}-api.tls=true
- traefik.http.routers.bm-api.tls.certresolver=letsencrypt - traefik.http.routers.${APP_ENV:-prod}-api.tls.certresolver=letsencrypt
- traefik.http.services.bm-api.loadbalancer.server.port=3000 - traefik.http.services.${APP_ENV:-prod}-api.loadbalancer.server.port=3000
web: web:
build: build:
@ -72,13 +73,11 @@ services:
labels: labels:
- traefik.enable=true - traefik.enable=true
- traefik.docker.network=coolify - traefik.docker.network=coolify
- traefik.http.routers.bm-web.rule=Host(`metalfrom.eu`) || Host(`www.metalfrom.eu`) - traefik.http.routers.${APP_ENV:-prod}-web.rule=Host(`${DOMAIN_WEB:-metalfrom.eu}`) || Host(`${DOMAIN_WEB_ALT:-www.metalfrom.eu}`)
- traefik.http.routers.bm-web.entrypoints=https - traefik.http.routers.${APP_ENV:-prod}-web.entrypoints=https
- traefik.http.routers.bm-web.tls=true - traefik.http.routers.${APP_ENV:-prod}-web.tls=true
- traefik.http.routers.bm-web.tls.certresolver=letsencrypt - traefik.http.routers.${APP_ENV:-prod}-web.tls.certresolver=letsencrypt
- traefik.http.routers.bm-web.tls.domains[0].main=metalfrom.eu - traefik.http.services.${APP_ENV:-prod}-web.loadbalancer.server.port=80
- traefik.http.routers.bm-web.tls.domains[0].sans=www.metalfrom.eu
- traefik.http.services.bm-web.loadbalancer.server.port=80
worker: worker:
build: build: