--- version: "3.8" services: app: image: kanboard/kanboard:v1.2.22 volumes: - kanboard_data:/var/www/app/data - kanboard_plugins:/var/www/app/plugins - kanboard_ssl:/etc/nginx/ssl secrets: - db_password networks: - proxy - internal configs: - source: config_php target: /var/www/app/config.php deploy: restart_policy: condition: on-failure labels: - "traefik.enable=true" - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=80" - "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}.version=" healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 30s timeout: 10s retries: 10 start_period: 1m db: image: postgres:13-alpine secrets: - db_password environment: - POSTGRES_DB=kanboard - POSTGRES_PASSWORD_FILE=/run/secrets/db_password - POSTGRES_USER=kanboard networks: - internal healthcheck: test: ["CMD", "pg_isready", "-U", "kanboard"] volumes: - postgres:/var/lib/postgresql/data deploy: labels: backupbot.backup: "true" backupbot.backup.pre-hook: "mkdir -p /tmp/backup/ && PGPASSWORD=$$(cat $${POSTGRES_PASSWORD_FILE}) pg_dump -U $${POSTGRES_USER} $${POSTGRES_DB} > /tmp/backup/backup.sql" backupbot.backup.post-hook: "rm -rf /tmp/backup" backupbot.backup.path: "/tmp/backup/" networks: proxy: external: true internal: volumes: kanboard_data: kanboard_plugins: kanboard_ssl: postgres: configs: config_php: name: ${STACK_NAME}_config_php_${CONFIG_PHP_VERSION} file: config.php.tmpl template_driver: golang secrets: db_password: external: true name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION}