--- version: "3.8" services: app: image: listmonk/listmonk:v3.0.0 networks: - internal - proxy environment: - TZ=Etc/UTC - LISTMONK_DB_HOST=${STACK_NAME}_db secrets: - db_password - admin_password depends_on: - db configs: - source: config_toml target: /listmonk/config.toml - source: app_entrypoint target: /docker-entrypoint.sh mode: 0555 entrypoint: /docker-entrypoint.sh deploy: update_config: failure_action: rollback order: start-first labels: - "traefik.enable=true" - "traefik.http.routers.${STACK_NAME}.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=9000" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" - "coop-cloud.${STACK_NAME}.version=2.0.0+v3.0.0" volumes: - "uploads:/uploads" db: image: postgres:13 networks: - internal secrets: - db_password environment: - POSTGRES_PASSWORD_FILE=/run/secrets/db_password - POSTGRES_USER=listmonk - POSTGRES_DB=listmonk healthcheck: test: ["CMD-SHELL", "pg_isready -U listmonk"] interval: 10s timeout: 5s retries: 6 volumes: - "postgres_data:/var/lib/postgresql/data" deploy: labels: backupbot.backup: "true" backupbot.backup.pre-hook: sh -c 'pg_dump -U "$$POSTGRES_USER" -Fc "$$POSTGRES_DB" | gzip > "/postgres.dump.gz"' backupbot.backup.path: "/postgres.dump.gz" backupbot.backup.post-hook: "rm -f /postgres.dump.gz" backupbot.restore: "true" backupbot.restore.post-hook: sh -c 'gzip -d /postgres.dump.gz && pg_restore --clean -U "$$POSTGRES_USER" --dbname="$$POSTGRES_DB" < /postgres.dump && rm -f /postgres.dump' secrets: db_password: name: ${STACK_NAME}_db_password_${SECRET_DB_PASSWORD_VERSION} external: true admin_password: name: ${STACK_NAME}_admin_password_${SECRET_ADMIN_PASSWORD_VERSION} external: true configs: config_toml: name: ${STACK_NAME}_config_toml_${CONFIG_TOML_VERSION} file: config.toml.tmpl template_driver: golang app_entrypoint: name: ${STACK_NAME}_app_entrypoint_${APP_ENTRYPOINT_VERSION} file: docker-entrypoint.sh networks: internal: proxy: external: true volumes: postgres_data: uploads: