From d08584704f267227906073a6e66a38791dbbce20 Mon Sep 17 00:00:00 2001 From: Nicolas Fryder Date: Sat, 27 Jun 2026 12:38:52 +0200 Subject: [PATCH] refactor: domaines et router Traefik configurables par env vars MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- docker-compose.yml | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index c156d98..8a76aa4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,11 +39,11 @@ services: labels: - traefik.enable=true - traefik.docker.network=coolify - - traefik.http.routers.pgadmin.rule=Host(`pgadmin.bm.nicolasfryder.ovh`) - - traefik.http.routers.pgadmin.entrypoints=https - - traefik.http.routers.pgadmin.tls=true - - traefik.http.routers.pgadmin.tls.certresolver=letsencrypt - - traefik.http.services.pgadmin.loadbalancer.server.port=80 + - traefik.http.routers.${APP_ENV:-prod}-pgadmin.rule=Host(`${DOMAIN_PGADMIN:-pgadmin.bm.nicolasfryder.ovh}`) + - traefik.http.routers.${APP_ENV:-prod}-pgadmin.entrypoints=https + - traefik.http.routers.${APP_ENV:-prod}-pgadmin.tls=true + - traefik.http.routers.${APP_ENV:-prod}-pgadmin.tls.certresolver=letsencrypt + - traefik.http.services.${APP_ENV:-prod}-pgadmin.loadbalancer.server.port=80 api: build: @@ -52,17 +52,18 @@ services: PORT: "3000" DATABASE_URL: ${DATABASE_URL} BM_IMPORT_TOKEN: ${BM_IMPORT_TOKEN} + CORS_ORIGINS: ${CORS_ORIGINS:-https://metalfrom.eu,https://www.metalfrom.eu} networks: - bm_internal - coolify labels: - traefik.enable=true - traefik.docker.network=coolify - - traefik.http.routers.bm-api.rule=Host(`bm.nicolasfryder.ovh`) - - traefik.http.routers.bm-api.entrypoints=https - - traefik.http.routers.bm-api.tls=true - - traefik.http.routers.bm-api.tls.certresolver=letsencrypt - - traefik.http.services.bm-api.loadbalancer.server.port=3000 + - traefik.http.routers.${APP_ENV:-prod}-api.rule=Host(`${DOMAIN_API:-bm.nicolasfryder.ovh}`) + - traefik.http.routers.${APP_ENV:-prod}-api.entrypoints=https + - traefik.http.routers.${APP_ENV:-prod}-api.tls=true + - traefik.http.routers.${APP_ENV:-prod}-api.tls.certresolver=letsencrypt + - traefik.http.services.${APP_ENV:-prod}-api.loadbalancer.server.port=3000 web: build: @@ -72,13 +73,11 @@ services: labels: - traefik.enable=true - traefik.docker.network=coolify - - traefik.http.routers.bm-web.rule=Host(`metalfrom.eu`) || Host(`www.metalfrom.eu`) - - traefik.http.routers.bm-web.entrypoints=https - - traefik.http.routers.bm-web.tls=true - - traefik.http.routers.bm-web.tls.certresolver=letsencrypt - - traefik.http.routers.bm-web.tls.domains[0].main=metalfrom.eu - - traefik.http.routers.bm-web.tls.domains[0].sans=www.metalfrom.eu - - traefik.http.services.bm-web.loadbalancer.server.port=80 + - traefik.http.routers.${APP_ENV:-prod}-web.rule=Host(`${DOMAIN_WEB:-metalfrom.eu}`) || Host(`${DOMAIN_WEB_ALT:-www.metalfrom.eu}`) + - traefik.http.routers.${APP_ENV:-prod}-web.entrypoints=https + - traefik.http.routers.${APP_ENV:-prod}-web.tls=true + - traefik.http.routers.${APP_ENV:-prod}-web.tls.certresolver=letsencrypt + - traefik.http.services.${APP_ENV:-prod}-web.loadbalancer.server.port=80 worker: build: