services: plausible_db: image: postgres:16-alpine restart: always volumes: - db-data:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=postgres healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 30s timeout: 5s retries: 5 plausible_events_db: image: clickhouse/clickhouse-server:24.3.3.102-alpine restart: always volumes: - event-data:/var/lib/clickhouse - event-logs:/var/log/clickhouse-server - ./clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro - ./clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro ulimits: nofile: soft: 262144 hard: 262144 healthcheck: test: ["CMD-SHELL", "wget -q -O - http://localhost:8123/ping || exit 1"] interval: 30s timeout: 5s retries: 5 plausible: image: ghcr.io/plausible/community-edition:v2.1.2 restart: always command: sh -c "/entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run" depends_on: plausible_db: condition: service_healthy plausible_events_db: condition: service_healthy ports: # Note that setting ports opens firewall for external access. - ${HTTP_PORT}:${HTTP_PORT} - ${HTTPS_PORT}:${HTTPS_PORT} volumes: - plausible-data:/var/lib/plausible environment: - BASE_URL=${BASE_URL} - SECRET_KEY_BASE=${SECRET_KEY_BASE} - HTTP_PORT - HTTPS_PORT volumes: db-data: event-data: event-logs: plausible-data: