version: "3.8" services: app: image: kutt/kutt:2.7.2 depends_on: - db - redis command: ["./wait-for-it.sh", "db:5432", "--", "npm", "start"] environment: REDIS_HOST: redis DEFAULT_DOMAIN: ${DOMAIN} DB_HOST: db DB_PORT: 5432 DB_NAME: kutt DB_USER: kutt # FIXME 3wc: replace with secret DB_PASSWORD: DB_SSL: "false" SITE_NAME: LINK_LENGTH: DISALLOW_REGISTRATION: DISALLOW_ANONYMOUS_LINKS: USER_LIMIT_PER_DAY: NON_USER_COOLDOWN: DEFAULT_MAX_STATS_PER_LINK: CUSTOM_DOMAIN_USE_HTTPS: JWT_SECRET: ADMIN_EMAILS: RECAPTCHA_SITE_KEY: RECAPTCHA_SECRET_KEY: GOOGLE_SAFE_BROWSING_KEY: GOOGLE_ANALYTICS: GOOGLE_ANALYTICS_UNIVERSAL: GOOGLE_ANALYTICS_UNIVERSAL: MAIL_HOST: MAIL_PORT: MAIL_SECURE: MAIL_USER: MAIL_FROM: MAIL_PASSWORD: networks: - proxy - internal deploy: restart_policy: condition: on-failure labels: - "traefik.enable=true" - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=3000" - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`${EXTRA_DOMAINS})" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" ## Redirect from EXTRA_DOMAINS to DOMAIN #- "traefik.http.routers.${STACK_NAME}.middlewares=${STACK_NAME}-redirect" #- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLForceHost=true" #- "traefik.http.middlewares.${STACK_NAME}-redirect.headers.SSLHost=${DOMAIN}" - coop-cloud.${STACK_NAME}.app.version=2.7.2-1cca9091 redis: image: redis:6.0-alpine volumes: - redis_data:/data networks: - internal deploy: labels: ['coop-cloud.${STACK_NAME}.redis.version=6.0-alpine-bff4439f'] db: image: postgres:12-alpine environment: POSTGRES_USER: kutt POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_DB: kutt volumes: - postgres_data:/var/lib/postgresql/data networks: - internal deploy: labels: ['coop-cloud.${STACK_NAME}.db.version=12-alpine-56ccea59'] volumes: redis_data: postgres_data: networks: proxy: external: true internal: