59 lines
1.7 KiB
YAML
59 lines
1.7 KiB
YAML
version: "3.9"
|
|
|
|
services:
|
|
web:
|
|
image: ${WEB_IMAGE}
|
|
environment:
|
|
NODE_ENV: production
|
|
APP_ENV: ${ENVIRONMENT}
|
|
PORT: "3000"
|
|
VIDEOREG_DB_FILE: /data/videoreg.json
|
|
VIDEOREG_DB_MEMORY_TTL_MS: ${VIDEOREG_DB_MEMORY_TTL_MS:-3600000}
|
|
VIDEOREG_NEXT_CACHE_REVALIDATE_SECONDS: ${VIDEOREG_NEXT_CACHE_REVALIDATE_SECONDS:-3600}
|
|
COMMIT_SHA: ${COMMIT_SHA}
|
|
RELEASE_ID: ${RELEASE_ID}
|
|
REGION: ${REGION:-}
|
|
TEAM_ID: ${TEAM_ID:-}
|
|
volumes:
|
|
- videoreg_data:/data
|
|
networks:
|
|
traefik: {}
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:3000/health/ready >/dev/null || exit 1"]
|
|
interval: 10s
|
|
timeout: 3s
|
|
retries: 3
|
|
start_period: 20s
|
|
deploy:
|
|
replicas: ${WEB_REPLICAS:-1}
|
|
placement:
|
|
constraints:
|
|
- ${WEB_PLACEMENT_CONSTRAINT:-node.role == manager}
|
|
update_config:
|
|
order: start-first
|
|
parallelism: 1
|
|
failure_action: rollback
|
|
monitor: 45s
|
|
rollback_config:
|
|
order: start-first
|
|
parallelism: 1
|
|
monitor: 45s
|
|
restart_policy:
|
|
condition: on-failure
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.docker.network=${TRAEFIK_NETWORK}"
|
|
- "traefik.http.routers.${STACK_NAME}-web.rule=Host(`${PUBLIC_HOST}`) && PathPrefix(`/`)"
|
|
- "traefik.http.routers.${STACK_NAME}-web.entrypoints=${TRAEFIK_ENTRYPOINTS:-websecure}"
|
|
- "traefik.http.routers.${STACK_NAME}-web.tls=${TRAEFIK_TLS:-true}"
|
|
- "traefik.http.services.${STACK_NAME}-web.loadbalancer.server.port=3000"
|
|
stop_grace_period: 30s
|
|
|
|
volumes:
|
|
videoreg_data:
|
|
|
|
networks:
|
|
traefik:
|
|
external: true
|
|
name: ${TRAEFIK_NETWORK}
|