Files
posthog/docker-compose.dev-full.yml

316 lines
8.1 KiB
YAML

#
# docker-compose file used ONLY for local development.
# This file is the same as `docker-compose.dev.yml` except it boots the services in containers instead of you running them locally
# For more info, see:
# https://posthog.com/handbook/engineering/developing-locally
#
# PostHog has sunset support for self-hosted K8s deployments.
# See: https://posthog.com/blog/sunsetting-helm-support-posthog
#
services:
proxy:
extends:
file: docker-compose.base.yml
service: proxy
ports:
- 8010:8000
depends_on:
- replay-capture
- capture
- capture-ai
- feature-flags
- hypercache-server
- web
db:
extends:
file: docker-compose.base.yml
service: db
ports:
- '5432:5432'
volumes:
- postgres-15-data:/var/lib/postgresql/data
redis7:
extends:
file: docker-compose.base.yml
service: redis7
ports:
- '6379:6379'
valkey:
extends:
file: docker-compose.base.yml
service: valkey
clickhouse:
extends:
file: docker-compose.base.yml
service: clickhouse
ports:
- '8123:8123'
- '9000:9000'
- '9440:9440'
- '9009:9009'
volumes:
- ./posthog/idl:/idl
- ./docker/clickhouse/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
- ./docker/clickhouse/config.xml:/etc/clickhouse-server/config.xml
- ./docker/clickhouse/config.d/default.xml:/etc/clickhouse-server/config.d/default.xml
- ./docker/clickhouse/users-dev.xml:/etc/clickhouse-server/users.xml
- ./docker/clickhouse/user_defined_function.xml:/etc/clickhouse-server/user_defined_function.xml
- ./posthog/user_scripts:/var/lib/clickhouse/user_scripts
depends_on:
- kafka
- zookeeper
zookeeper:
extends:
file: docker-compose.base.yml
service: zookeeper
kafka:
extends:
file: docker-compose.base.yml
service: kafka
ports:
- '9092:9092'
depends_on:
- zookeeper
objectstorage:
extends:
file: docker-compose.base.yml
service: objectstorage
ports:
- '19000:19000'
- '19001:19001'
# Named volume from the SeaweedFS swap; the old MinIO volume is left in place
# because SeaweedFS cannot read its on-disk format.
volumes:
- objectstorage-data:/data
maildev:
extends:
file: docker-compose.base.yml
service: maildev
ports:
- '1080:1080'
- '1025:1025'
webhook-tester:
image: tarampampam/webhook-tester:2.2.6
restart: on-failure
ports:
- '2080:8080'
environment:
- AUTO_CREATE_SESSIONS=true
- OTEL_SDK_DISABLED=true
worker:
extends:
file: docker-compose.base.yml
service: worker
build: .
volumes:
- .:/app/posthog
environment:
- DEBUG=1
- PLUGIN_SERVER_IDLE=1
- FEATURE_FLAGS_SERVICE_URL=http://feature-flags:3001
- CLICKHOUSE_LOGS_CLUSTER_HOST=clickhouse
- CLICKHOUSE_LOGS_CLUSTER_SECURE=false
web:
extends:
file: docker-compose.base.yml
service: web
ports:
- 8000:8000
build: .
command: ./bin/docker-server
volumes:
- .:/app/posthog
environment:
- DEBUG=1
- OBJECT_STORAGE_ENDPOINT=http://objectstorage:19000
- POSTHOG_SKIP_MIGRATION_CHECKS=true
- JS_URL=http://localhost:8000
- FEATURE_FLAGS_SERVICE_URL=http://feature-flags:3001
- CLICKHOUSE_LOGS_CLUSTER_HOST=clickhouse
- CLICKHOUSE_LOGS_CLUSTER_SECURE=false
depends_on:
- db
- redis7
- clickhouse
- kafka
links:
- objectstorage:objectstorage
capture:
extends:
file: docker-compose.base.yml
service: capture
environment:
- DEBUG=1
depends_on:
- redis7
- kafka
capture-ai:
extends:
file: docker-compose.base.yml
service: capture-ai
environment:
- DEBUG=1
depends_on:
- redis7
- kafka
replay-capture:
extends:
file: docker-compose.base.yml
service: replay-capture
depends_on:
- redis7
- kafka
property-defs-rs:
extends:
file: docker-compose.base.yml
service: property-defs-rs
depends_on:
- kafka
property-defs-ai:
extends:
file: docker-compose.base.yml
service: property-defs-rs
environment:
KAFKA_CONSUMER_TOPIC: clickhouse_ai_events_json
KAFKA_CONSUMER_GROUP: property-defs-ai
depends_on:
- kafka
feature-flags:
extends:
file: docker-compose.base.yml
service: feature-flags
depends_on:
- redis7
- db
hypercache-server:
extends:
file: docker-compose.base.yml
service: hypercache-server
depends_on:
- redis7
plugins:
extends:
file: docker-compose.base.yml
service: plugins
build:
context: .
dockerfile: Dockerfile.node
volumes:
- .:/app/posthog
environment:
- DOCKER=1
# Every CDP process dual-writes to Valkey and refuses to start without a host.
- CDP_VALKEY_HOST=valkey
- CDP_VALKEY_PORT=6379
depends_on:
- db
- redis7
- valkey
- clickhouse
- kafka
- objectstorage
migrate:
extends:
file: docker-compose.base.yml
service: migrate
build: .
volumes:
- .:/app/posthog
environment:
- DEBUG=1
# Temporal containers
elasticsearch:
extends:
file: docker-compose.base.yml
service: elasticsearch
expose:
- 9200
temporal:
extends:
file: docker-compose.base.yml
service: temporal
ports:
- 7233:7233
temporal-admin-tools:
extends:
file: docker-compose.base.yml
service: temporal-admin-tools
depends_on:
- temporal
temporal-ui:
extends:
file: docker-compose.base.yml
service: temporal-ui
ports:
- 8081:8080
depends_on:
temporal:
condition: service_started
db:
condition: service_healthy
temporal-django-worker:
extends:
file: docker-compose.base.yml
service: temporal-django-worker
build: .
volumes:
- .:/app/posthog
environment:
- FEATURE_FLAGS_SERVICE_URL=http://feature-flags:3001
- CLICKHOUSE_LOGS_CLUSTER_HOST=clickhouse
- CLICKHOUSE_LOGS_CLUSTER_SECURE=false
depends_on:
- db
- redis7
- clickhouse
- kafka
- objectstorage
- temporal
otel-collector:
extends:
file: docker-compose.base.yml
service: otel-collector
depends_on:
- jaeger
jaeger:
extends:
file: docker-compose.base.yml
service: jaeger
dynamodb:
extends:
file: docker-compose.base.yml
service: dynamodb
networks:
otel_network:
driver: bridge
volumes:
postgres-15-data:
redpanda-data:
objectstorage-data: