services: app: image: mauriceboe/trek:latest container_name: trek read_only: true security_opt: - no-new-privileges:true cap_drop: - ALL cap_add: - CHOWN - SETUID - SETGID tmpfs: - /tmp:noexec,nosuid,size=64m ports: - "3000:3000" environment: - NODE_ENV=production - JWT_SECRET=${JWT_SECRET:-} # ALLOWED_ORIGINS: restrict CORS + used as the app URL in email notification links # If not set, same-origin CORS is used and email links default to http://localhost:PORT - ALLOWED_ORIGINS=${ALLOWED_ORIGINS:-} - PORT=3000 - TZ=${TZ:-UTC} # LOG_LEVEL: info (default) or debug (verbose details in docker logs) - LOG_LEVEL=${LOG_LEVEL:-info} volumes: - ./data:/app/data - ./uploads:/app/uploads restart: unless-stopped healthcheck: test: ["CMD", "wget", "-qO-", "http://localhost:3000/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 15s