diff --git a/compose.yml b/compose.yml index f651e77..1786703 100644 --- a/compose.yml +++ b/compose.yml @@ -14,6 +14,10 @@ services: - DATABASE_URL=postgres://plausible:plausible@${STACK_NAME}_db:5432/plausible - SMTP_HOST_ADDR - MAILER_EMAIL + - SMTP_HOST_PORT + - SMTP_USER_NAME + - SMTP_USER_PWD + - SMTP_HOST_SSL_ENABLED - DISABLE_REGISTRATION - DISABLE_AUTH networks: diff --git a/compose.yml~ b/compose.yml~ new file mode 100644 index 0000000..f651e77 --- /dev/null +++ b/compose.yml~ @@ -0,0 +1,102 @@ +--- +version: "3.8" + +services: + app: + image: plausible/analytics:v2.0.0 + command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run" + depends_on: + - db + - events_db + environment: + - BASE_URL=https://$DOMAIN + - SECRET_KEY_BASE + - DATABASE_URL=postgres://plausible:plausible@${STACK_NAME}_db:5432/plausible + - SMTP_HOST_ADDR + - MAILER_EMAIL + - DISABLE_REGISTRATION + - DISABLE_AUTH + networks: + - proxy + - internal + deploy: + restart_policy: + condition: on-failure + labels: + - "traefik.enable=true" + - "traefik.http.services.${STACK_NAME}.loadbalancer.server.port=8000" + - "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}" + - coop-cloud.${STACK_NAME}.version=3.0.1+v2.0.0 + db: + image: postgres:13.12 + configs: + - source: db_entrypoint + target: /docker-entrypoint.sh + mode: 0555 + # Custom docker entrypoint to handle major Postgres version upgrades + volumes: + - db-data:/var/lib/postgresql/data + entrypoint: /docker-entrypoint.sh + environment: + - POSTGRES_USER=plausible + - POSTGRES_PASSWORD=plausible + - POSTGRES_DB=plausible + networks: + - internal + 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.post-hook: sh -c 'gzip -d /postgres.dump.gz && pg_restore -U "$$POSTGRES_USER" --dbname="$$PLAUSIBLE_DB" < /postgres.dump && rm /postgres.dump' + + plausible_events_db: + image: clickhouse/clickhouse-server:23.4.2.11-alpine + volumes: + - event-data:/var/lib/clickhouse + entrypoint: /custom-entrypoint.sh + configs: + - source: clickhouse-config + target: /etc/clickhouse-server/config.d/logging.xml + - source: clickhouse-user-config + target: /etc/clickhouse-server/users.d/clickhouse-user-config.xml + - source: clickhouse_entrypoint + target: /custom-entrypoint.sh + mode: 0555 + networks: + - internal + deploy: + labels: + backupbot.backup: "true" + backupbot.backup.pre-hook: clickhouse-backup create events + backupbot.backup.path: "/var/lib/clickhouse/backup/events" + backupbot.backup.post-hook: "rm -rf /var/lib/clickhouse/backup/events" + backupbot.restore.post-hook: clickhouse-backup restore events + backupbot.resoter.post-hook: "rm -rf /var/lib/clickhouse/backup/events" + +volumes: + db-data: + event-data: + +networks: + proxy: + external: true + internal: + +configs: + clickhouse-config: + name: ${STACK_NAME}_clickhouse_config_${CLICKHOUSE_CONF_VERSION} + file: clickhouse-config.xml + clickhouse-user-config: + name: ${STACK_NAME}_clickhouse_user_config_${CLICKHOUSE_USER_CONF_VERSION} + file: clickhouse-user-config.xml + db_entrypoint: + name: ${STACK_NAME}_db_entrypoint_${DB_ENTRYPOINT_VERSION} + file: entrypoint.postgres.sh.tmpl + template_driver: golang + clickhouse_entrypoint: + name: ${STACK_NAME}_clickhouse_entrypoint_${CLICKHOUSE_ENTRYPOINT_VERSION} + file: entrypoint.clickhouse.sh