wekan/compose.yml

131 lines
3.2 KiB
YAML

version: '3.8'
services:
db:
image: mongo:4.4
command: mongod --oplogSize 128
volumes:
- wekan-db:/data/db
- wekan-db-dump:/dump
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:
- "coop-cloud.${STACK_NAME}.db.version=1.0.0+4.4"
app:
image: wekanteam/wekan:v5.41
environment:
- MONGO_URL
- DOMAIN
- ROOT_URL
- DEBUG
- OAUTH2_ENABLED
- OAUTH2_LOGIN_STYLE
- OAUTH2_CLIENT_ID
- OAUTH2_SERVER_URL
- OAUTH2_AUTH_ENDPOINT
- OAUTH2_USERINFO_ENDPOINT
- OAUTH2_TOKEN_ENDPOINT
- OAUTH2_SECRET
- 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: # workaround because there is no curl in wekan container
test: node /build/healthcheck.js
interval: 30s
timeout: 10s
retries: 10
start_period: 1m
secrets:
- sso_id
- sso_secret
configs:
- source: healthcheck_js
target: /build/healthcheck.js
mode: 0555
- source: entrypoint
target: /custom-entrypoint.sh
mode: 0555
entrypoint: /custom-entrypoint.sh
deploy:
update_config:
failure_action: rollback
order: start-first
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.services.board.loadbalancer.server.port=8080"
- "traefik.http.routers.board.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.board.entrypoints=web"
- "coop-cloud.${STACK_NAME}.app.version=1.0.0+v5.41"
# restic:
# image: mazzolino/restic
# hostname: restic_wekan
# environment:
# BACKUP_CRON: "0 5 * * *"
# RESTIC_REPOSITORY: /backup
# RESTIC_PASSWORD: ${RESTIC_PASSWORD}
# RESTIC_BACKUP_SOURCES: /source
# RESTIC_FORGET_ARGS: --prune --keep-daily 7 --keep-weekly 4
# PRE_COMMANDS: |-
# docker stop wekan_app_1
# docker exec wekan_db_1 bash -c "mongodump --archive=dump/wekan.archiv"
# docker stop wekan_db_1
# POST_COMMANDS_EXIT: |-
# docker start wekan_db_1
# docker start wekan_app_1
# volumes:
# - wekan-db-dump:/source/db:rw
# - /var/run/docker.sock:/var/run/docker.sock
# - /mnt/backup/wekan:/backup
# networks:
# - backend
secrets:
sso_id:
external: true
name: ${STACK_NAME}_sso_id_${SECRET_SSO_ID_VERSION}
sso_secret:
external: true
name: ${STACK_NAME}_sso_secret_${SECRET_SSO_SECRET_VERSION}
volumes:
wekan-db:
wekan-db-dump:
networks:
proxy:
external: true
internal:
configs:
healthcheck_js:
name: ${STACK_NAME}_healthcheck_js
file: healthcheck.js
entrypoint:
name: ${STACK_NAME}_custom-entrypoint.sh
file: custom-entrypoint.sh