version: '3.8' services: db: image: mongo:4.4 command: mongod --logpath /dev/null --oplogSize 128 --quiet volumes: - wekan-db:/data/db networks: - internal healthcheck: test: echo 'db.runCommand("ping").ok' | mongo localhost:27017/test --quiet interval: 30s timeout: 10s retries: 10 start_period: 1m deploy: labels: backupbot.backup: "true" backupbot.backup.pre-hook: "mkdir /tmp/backup/ && mongodump --archive=/tmp/backup/wekan.db" backupbot.backup.post-hook: "rm -rf /tmp/backup" backupbot.backup.path: "/tmp/backup/" app: image: quay.io/wekan/wekan:v5.97 environment: - MONGO_URL - DOMAIN - ROOT_URL - DEBUG - OAUTH2_ENABLED - OAUTH2_LOGIN_STYLE - OAUTH2_CLIENT_ID - OAUTH2_SECRET - OAUTH2_SERVER_URL - OAUTH2_AUTH_ENDPOINT - OAUTH2_USERINFO_ENDPOINT - OAUTH2_TOKEN_ENDPOINT - OAUTH2_REQUEST_PERMISSIONS - OAUTH2_ID_MAP - OAUTH2_USERNAME_MAP - OAUTH2_FULLNAME_MAP - OAUTH2_EMAIL_MAP - PASSWORD_LOGIN_ENABLED - MAIL_URL - MAIL_FROM - WITH_API - RICHER_CARD_COMMENT_EDITOR networks: - internal - proxy depends_on: - db healthcheck: test: node /build/healthcheck.js # no curl for healthcheck in wekan container interval: 30s timeout: 10s retries: 10 start_period: 1m configs: - source: healthcheck_js target: /build/healthcheck.js mode: 0555 deploy: update_config: failure_action: rollback order: start-first labels: - "traefik.enable=true" - "traefik.docker.network=proxy" - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=8080" - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" - "coop-cloud.${STACK_NAME}.app.version=1.0.0+v5.97" volumes: wekan-db: networks: proxy: external: true internal: configs: healthcheck_js: name: ${STACK_NAME}_healthcheck_js file: healthcheck.js