--- version: "3.8" services: app: image: dobbs/farm:1.0.24 command: /bin/sh entrypoint.sh volumes: - "${FEDWIKI_VOLUME}:/home/node/.wiki" networks: - proxy configs: - source: entrypoint_sh_conf target: /home/node/entrypoint.sh - source: config_json_initial_conf target: /home/node/initial-config/config.json secrets: - cookie_secret environment: - DOMAIN - COOKIE_SECRET - AUTHOR - ADMIN_KEY deploy: update_config: order: start-first 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}`) || HostRegexp(`{subdomain:\\w+}.${DOMAIN}`)" - "traefik.http.routers.${STACK_NAME}.entrypoints=web-secure" - "traefik.http.routers.${STACK_NAME}.tls.certresolver=${LETS_ENCRYPT_ENV}" - "traefik.http.routers.${STACK_NAME}.tls.domains[0].main=${DOMAIN}" - "traefik.http.routers.${STACK_NAME}.tls.domains[0].sans=*.${DOMAIN}" - "traefik.http.routers.${STACK_NAME}.priority=1" - "caddy=https://${DOMAIN}, https://*.${DOMAIN}, https://*.*.${DOMAIN}, https://*.*.*.${DOMAIN}" - "caddy.reverse_proxy={{upstreams 3000}}" - "caddy.tls.on_demand=" - "backupbot.backup=true" - "backupbot.backup.path=/home/node/.wiki" - "coop-cloud.${STACK_NAME}.version=2.1.0+1.0.24" healthcheck: test: "node -e 'var http = require(\"http\"); var options = { host : \"localhost\", port : \"3000\", timeout : 2000, path : \"/view/welcome-visitors\", headers: { \"Host\": \"${DOMAIN}\" } }; var request = http.request(options, (res) => { console.log(`STATUS: $${res.statusCode}`); if (res.statusCode == 200) { process.exit(0); } else { process.exit(1); } }); request.on(\"error\", function(err) { console.log('ERROR'); process.exit(1); }); request.end();'" interval: 10s timeout: 2s retries: 2 start_period: 30s volumes: fedwiki: networks: proxy: external: true secrets: cookie_secret: external: true name: ${STACK_NAME}_cookie_secret_${SECRET_COOKIE_SECRET_VERSION} configs: entrypoint_sh_conf: name: ${STACK_NAME}_entrypoint_sh_${ENTRYPOINT_SH_VERSION} file: entrypoint.sh config_json_initial_conf: name: ${STACK_NAME}_config_initial_json_${CONFIG_INITIAL_JSON_VERSION} file: config.initial.json.tmpl template_driver: golang