version: "3.7" services: app: image: ghcr.io/yanislav-igonin/micrach-go/micrach:latest networks: - web environment: ENV: release PORT: ${PORT} IS_DB_SEEDED: ${IS_DB_SEEDED} IS_RATE_LIMITER_ENABLED: ${IS_RATE_LIMITER_ENABLED} THREADS_MAX_COUNT: ${THREADS_MAX_COUNT} POSTGRES_URL: ${POSTGRES_URL} THREAD_BUMP_LIMIT: ${THREAD_BUMP_LIMIT} IS_CAPTCHA_ACTIVE: ${IS_CAPTCHA_ACTIVE} GATEWAY_URL: ${GATEWAY_URL} GATEWAY_API_KEY: ${GATEWAY_API_KEY} GATEWAY_BOARD_ID: ${GATEWAY_BOARD_ID} GATEWAY_BOARD_URL: ${GATEWAY_BOARD_URL} GATEWAY_BOARD_DESCRIPTION: ${GATEWAY_BOARD_DESCRIPTION} volumes: - /root/micrach-go/uploads:/app/uploads deploy: mode: global placement: constraints: - node.role == manager update_config: parallelism: 1 delay: 10s restart_policy: condition: on-failure labels: traefik.enable: "true" traefik.docker.network: "web" traefik.http.services.micrach.loadbalancer.server.port: ${PORT} traefik.http.middlewares.haiku-bot-secure.stripprefix.prefixes: ${GATEWAY_BOARD_ID} traefik.http.middlewares.haiku-bot-secure.stripprefix.forceSlash: false traefik.http.middlewares.micrach-https-redirect.redirectscheme.scheme: "https" traefik.http.routers.micrach.entrypoints: "http" traefik.http.routers.micrach.rule: "Host(`micrach.igonin.dev`) && Path(`/${GATEWAY_BOARD_ID}`)" traefik.http.routers.micrach.middlewares: "micrach-https-redirect" traefik.http.routers.micrach-secure.entrypoints: "https" traefik.http.routers.micrach-secure.rule: "Host(`micrach.igonin.dev`) && Path(`/${GATEWAY_BOARD_ID}`)" traefik.http.routers.micrach-secure.tls: "true" traefik.http.routers.micrach-secure.service: "micrach" networks: web: driver: overlay external: true POSTGRES_URL=postgres://qzvyzlyk:OKTJEahUUPJ_1mB_s7-27Wqcp2GE64sS@tai.db.elephantsql.com/qzvyzlyk?pool_max_conns=5 GATEWAY_BOARD_ID=b GATEWAY_BOARD_DESCRIPTION=Random GATEWAY_BOARD_URL=https://micrach.igonin.dev/b ENV=release PORT=3000 docker stack deploy -c docker-compose.yml micrach