services: plausible_db: # Plausible v2.1.1 was tested against PostgreSQL versions 15 and 16 # https://github.com/plausible/analytics/blob/v2.1.1/.github/workflows/elixir.yml#L21-L32 image: postgres:16-alpine restart: always volumes: - db-data-v16:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD=postgres 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 plausible: image: ghcr.io/plausible/community-edition:v2.1.1 restart: always command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run" depends_on: - plausible_db - plausible_events_db ports: - 127.0.0.1:8000:8000 env_file: - plausible-conf.env volumes: # NOTE: When it comes time to upgrade Postgres, you should: # 1. Manually export the database with `pg_dumpall` (via `docker exec`). # 2. Change the version number of this volume, to create a fresh data directory. # 3. Upgrade the Postgres version, and don't let Plausible itself run yet (so it doesn't init an empty DB). # 4. Import the database with `psql` (via `docker exec`). # 5. (Optional) Remove the previous volume with `docker volume rm db-data-vXX`. db-data-v16: driver: local event-data: driver: local event-logs: driver: local