Files
docker-compose-cookbooks/posthog_dev/compose.yaml
T

136 lines
4.6 KiB
YAML

services:
postgres:
image: ${POSTHOG_POSTGRES_IMAGE:-postgres:15-alpine}
restart: ${POSTHOG_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/posthog/postgres:/var/lib/postgresql/data
environment:
- POSTGRES_DB=${POSTHOG_DB_NAME:-posthog}
- POSTGRES_USER=${POSTHOG_DB_USER:-posthog}
- POSTGRES_PASSWORD=${POSTHOG_DB_PASSWORD:-posthog}
- POSTGRES_HOST_AUTH_METHOD=scram-sha-256
networks:
- internal
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTHOG_DB_USER:-posthog} -d ${POSTHOG_DB_NAME:-posthog}"]
interval: 5s
timeout: 5s
retries: 5
redis:
image: ${POSTHOG_REDIS_IMAGE:-redis:7-alpine}
restart: ${POSTHOG_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/posthog/redis:/data
networks:
- internal
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
clickhouse:
image: ${POSTHOG_CLICKHOUSE_IMAGE:-clickhouse/clickhouse-server:24-alpine}
restart: ${POSTHOG_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/posthog/clickhouse:/var/lib/clickhouse
environment:
- CLICKHOUSE_DB=${POSTHOG_CLICKHOUSE_DB:-posthog}
- CLICKHOUSE_USER=${POSTHOG_CLICKHOUSE_USER:-clickhouse}
- CLICKHOUSE_PASSWORD=${POSTHOG_CLICKHOUSE_PASSWORD:-clickhouse}
- CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1
networks:
- internal
kafka:
image: ${POSTHOG_KAFKA_IMAGE:-docker.io/bitnami/kafka:3.7}
restart: ${POSTHOG_RESTART:-unless-stopped}
volumes:
- ${VOL_PATH:-/data}/posthog/kafka:/bitnami/kafka
environment:
- KAFKA_CFG_NODE_ID=0
- KAFKA_CFG_PROCESS_ROLES=controller,broker
- KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
- KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092
- KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
- ALLOW_PLAINTEXT_LISTENER=yes
- KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
- KAFKA_CFG_LOG_RETENTION_MS=3600000
- KAFKA_CFG_LOG_RETENTION_CHECK_INTERVAL_MS=300000
- KAFKA_CFG_LOG_RETENTION_HOURS=1
networks:
- internal
posthog:
image: ${POSTHOG_IMAGE:-posthog/posthog:latest}
restart: ${POSTHOG_RESTART:-unless-stopped}
command: /compose/start
volumes:
- ${VOL_PATH:-/data}/posthog/data:/data
- ${VOL_PATH:-/data}/posthog/logs:/var/log
environment:
- SITE_URL=${POSTHOG_SITE_URL:-http://localhost:8000}
- SECRET_KEY=${POSTHOG_SECRET_KEY:?must_be_set}
- DATABASE_URL=postgres://${POSTHOG_DB_USER:-posthog}:${POSTHOG_DB_PASSWORD:-posthog}@postgres:5432/${POSTHOG_DB_NAME:-posthog}
- REDIS_URL=redis://redis:6379/
- CLICKHOUSE_HOST=clickhouse
- CLICKHOUSE_DATABASE=${POSTHOG_CLICKHOUSE_DB:-posthog}
- CLICKHOUSE_USER=${POSTHOG_CLICKHOUSE_USER:-clickhouse}
- CLICKHOUSE_PASSWORD=${POSTHOG_CLICKHOUSE_PASSWORD:-clickhouse}
- CLICKHOUSE_SECURE=false
- CLICKHOUSE_VERIFY=false
- KAFKA_HOSTS=kafka:9092
- DEPLOYMENT=hobby
- OPT_OUT_CAPTURE=true
- DISABLE_SECURITY=0
- EMAIL_HOST=${POSTHOG_EMAIL_HOST:-}
- EMAIL_HOST_USER=${POSTHOG_EMAIL_USER:-}
- EMAIL_HOST_PASSWORD=${POSTHOG_EMAIL_PASSWORD:-}
- EMAIL_PORT=${POSTHOG_EMAIL_PORT:-587}
- EMAIL_USE_TLS=${POSTHOG_EMAIL_TLS:-true}
networks:
- proxy
- internal
depends_on:
- postgres
- redis
- clickhouse
- kafka
worker:
image: ${POSTHOG_IMAGE:-posthog/posthog:latest}
restart: ${POSTHOG_RESTART:-unless-stopped}
command: /compose/worker
volumes:
- ${VOL_PATH:-/data}/posthog/data:/data
environment:
- SITE_URL=${POSTHOG_SITE_URL:-http://localhost:8000}
- SECRET_KEY=${POSTHOG_SECRET_KEY:?must_be_set}
- DATABASE_URL=postgres://${POSTHOG_DB_USER:-posthog}:${POSTHOG_DB_PASSWORD:-posthog}@postgres:5432/${POSTHOG_DB_NAME:-posthog}
- REDIS_URL=redis://redis:6379/
- CLICKHOUSE_HOST=clickhouse
- CLICKHOUSE_DATABASE=${POSTHOG_CLICKHOUSE_DB:-posthog}
- CLICKHOUSE_USER=${POSTHOG_CLICKHOUSE_USER:-clickhouse}
- CLICKHOUSE_PASSWORD=${POSTHOG_CLICKHOUSE_PASSWORD:-clickhouse}
- CLICKHOUSE_SECURE=false
- CLICKHOUSE_VERIFY=false
- KAFKA_HOSTS=kafka:9092
- DEPLOYMENT=hobby
- OPT_OUT_CAPTURE=true
networks:
- internal
depends_on:
- postgres
- redis
- clickhouse
- kafka
- posthog
networks:
proxy:
external: true
internal: