services: dashboard: build: context: ./src dockerfile: Dockerfile container_name: manus-dashboard # Redémarrage automatique après un arrêt anormal ; le processus reste borné. restart: always mem_limit: 512m privileged: true env_file: - .env environment: - NODE_ENV=${NODE_ENV:-production} - DASHBOARD_ENV=prod - PORT=${PORT:-3001} - JWT_SECRET=${JWT_SECRET} - ADMIN_USERNAME=${ADMIN_USERNAME} - ADMIN_PASSWORD=${ADMIN_PASSWORD} - GITEA_URL=${GITEA_URL} - GITEA_USERNAME=${GITEA_USERNAME} - GITEA_PASSWORD=${GITEA_PASSWORD} - GITEA_TOKEN=${GITEA_TOKEN} - GITEA_RECETTE_URL=${GITEA_RECETTE_URL} - GITEA_RECETTE_TOKEN=${GITEA_RECETTE_TOKEN} - GITEA_PASSWORD_PROD=${GITEA_PASSWORD} - APPS_BASE_PATH=${APPS_BASE_PATH:-/opt/manus-deploy/apps} - INFRA_BASE_PATH=${INFRA_BASE_PATH:-/opt/manus-deploy/infrastructure} # Contrôles bornés et dédoublonnés par healthcheck.js. - HEALTH_CHECK_INTERVAL=${HEALTH_CHECK_INTERVAL:-60000} volumes: - /var/run/docker.sock:/var/run/docker.sock - /opt/manus-deploy:/opt/manus-deploy networks: - web labels: - "traefik.enable=true" - "traefik.http.routers.manus-dashboard.rule=Host(`dashboard.santinova-soft.org`)" - "traefik.http.routers.manus-dashboard.entrypoints=websecure" - "traefik.http.routers.manus-dashboard.tls=true" - "traefik.http.routers.manus-dashboard.tls.certresolver=letsencrypt" - "traefik.http.routers.manus-dashboard.service=manus-dashboard-svc" - "traefik.http.routers.manus-dashboard.priority=100" - "traefik.http.services.manus-dashboard-svc.loadbalancer.server.port=3001" - "traefik.docker.network=web" networks: web: external: true