services: app: image: node:22-alpine restart: unless-stopped working_dir: /app command: ["/entrypoint.sh"] environment: NODE_ENV: production PORT: 3000 HOSTNAME: 0.0.0.0 volumes: - app-data:/app - ./docker/entrypoint.sh:/entrypoint.sh:ro labels: - "traefik.enable=true" - "traefik.http.routers.tribunal.rule=Host(`${APP_DOMAIN}`)" - "traefik.http.routers.tribunal.entrypoints=https" - "traefik.http.routers.tribunal.tls.certresolver=letsencrypt" - "traefik.http.routers.tribunal.middlewares=compression@file,hsts-headers@file" - "traefik.http.services.tribunal.loadbalancer.server.port=3000" networks: - proxy webhook: build: ./docker/webhook restart: unless-stopped environment: WEBHOOK_SECRET: ${WEBHOOK_SECRET} volumes: - app-data:/data labels: - "traefik.enable=true" - "traefik.http.routers.tribunal-webhook.rule=Host(`containers01.lan.alxczl.fr`) && PathPrefix(`/tribunal-webhook`)" - "traefik.http.routers.tribunal-webhook.tls.certresolver=voidca" - "traefik.http.routers.tribunal-webhook.entrypoints=https" - "traefik.http.routers.tribunal-webhook.middlewares=hsts-headers@file,tribunal-webhook-strip" - "traefik.http.middlewares.tribunal-webhook-strip.stripprefix.prefixes=/tribunal-webhook" - "traefik.http.services.tribunal-webhook.loadbalancer.server.port=9000" networks: - proxy volumes: app-data: networks: proxy: external: true name: ${TRAEFIK_NETWORK}