services: app: image: registry.infra.mintel.me/mintel/klz-cables.com:latest restart: always networks: - infra env_file: - .env labels: - "traefik.enable=true" # HTTP ⇒ HTTPS redirect - "traefik.http.routers.klz-cables-web.rule=(Host(`klz-cables.com`) || Host(`www.klz-cables.com`) || Host(`staging.klz-cables.com`)) && !PathPrefix(`/.well-known/acme-challenge/`)" - "traefik.http.routers.klz-cables-web.entrypoints=web" - "traefik.http.routers.klz-cables-web.middlewares=redirect-https" # HTTPS router - "traefik.http.routers.klz-cables.rule=Host(`klz-cables.com`) || Host(`www.klz-cables.com`) || Host(`staging.klz-cables.com`)" - "traefik.http.routers.klz-cables.entrypoints=websecure" - "traefik.http.routers.klz-cables.tls.certresolver=le" - "traefik.http.routers.klz-cables.tls=true" - "traefik.http.routers.klz-cables.service=klz-cables" - "traefik.http.services.klz-cables.loadbalancer.server.port=3000" - "traefik.http.services.klz-cables.loadbalancer.server.scheme=http" # Forwarded Headers - "traefik.http.middlewares.klz-forward.headers.customrequestheaders.X-Forwarded-Proto=https" - "traefik.http.middlewares.klz-forward.headers.customrequestheaders.X-Forwarded-Ssl=on" # Middlewares - "traefik.http.routers.klz-cables.middlewares=klz-forward,compress" cms: build: context: ./cms dockerfile: Dockerfile restart: always networks: - infra env_file: - .env environment: DATABASE_CLIENT: postgres DATABASE_HOST: cms-db DATABASE_PORT: 5432 DATABASE_NAME: ${STRAPI_DATABASE_NAME:-strapi} DATABASE_USERNAME: ${STRAPI_DATABASE_USERNAME:-strapi} DATABASE_PASSWORD: ${STRAPI_DATABASE_PASSWORD:-strapi} NODE_ENV: ${NODE_ENV:-development} STRAPI_URL: ${STRAPI_URL:-https://cms.klz-cables.com} volumes: - ./cms/config:/opt/app/config - ./cms/src:/opt/app/src - ./cms/package.json:/opt/app/package.json - ./cms/package-lock.json:/opt/app/package-lock.json - ./cms/public/uploads:/opt/app/public/uploads - ./cms/dist:/opt/app/dist labels: - "traefik.enable=true" - "traefik.http.routers.klz-cms.rule=Host(`cms.klz-cables.com`) || Host(`cms-staging.klz-cables.com`)" - "traefik.http.routers.klz-cms.entrypoints=websecure" - "traefik.http.routers.klz-cms.tls.certresolver=le" - "traefik.http.routers.klz-cms.tls=true" - "traefik.http.services.klz-cms.loadbalancer.server.port=1337" cms-db: image: postgres:16-alpine restart: always networks: - infra env_file: - .env environment: POSTGRES_DB: ${STRAPI_DATABASE_NAME:-strapi} POSTGRES_USER: ${STRAPI_DATABASE_USERNAME:-strapi} POSTGRES_PASSWORD: ${STRAPI_DATABASE_PASSWORD:-strapi} volumes: - cms-db-data:/var/lib/postgresql/data networks: infra: external: true volumes: cms-db-data: