# # docker-compose file used ONLY for local development. # 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 extra_hosts: - 'web:host-gateway' - 'plugins:host-gateway' - 'capture:host-gateway' - 'replay-capture:host-gateway' - 'feature-flags:host-gateway' environment: CADDYFILE: | http://localhost:8000 { @replay-capture { path /s path /s/* } @capture { path /e path /e/* path /i/v0/* path /batch path /batch* path /capture path /capture* } @flags { path /flags path /flags* } @webhooks { path /public/webhooks path /public/webhooks/* path /public/m path /public/m/* } handle @capture { reverse_proxy capture:3307 } handle @replay-capture { reverse_proxy replay-capture:3306 } handle @flags { reverse_proxy host.docker.internal:3001 } handle @webhooks { reverse_proxy plugins:6738 } handle { reverse_proxy web:8000 } } db: extends: file: docker-compose.base.yml service: db ports: - '5432:5432' # something in the django app when running in dev mode # (maybe only in Pycharm) keeps many idle transactions open # and eventually kills postgres, these settings aim to stop that happening. # They are only for DEV and should not be used in production. command: postgres -c max_connections=1000 -c idle_in_transaction_session_timeout=300000 -c max_prepared_transactions=10 counters_db: extends: file: docker-compose.base.yml service: counters_db ports: - '5433:5432' command: postgres -c max_connections=1000 -c idle_in_transaction_session_timeout=300000 redis: extends: file: docker-compose.base.yml service: redis ports: - '6379:6379' redis7: extends: file: docker-compose.base.yml service: redis7 ports: - '6479:6379' flower: extends: file: docker-compose.base.yml service: flower ports: - '5555:5555' clickhouse: extends: file: docker-compose.base.yml service: clickhouse hostname: clickhouse environment: - AWS_ACCESS_KEY_ID=object_storage_root_user - AWS_SECRET_ACCESS_KEY=object_storage_root_password - CLICKHOUSE_SKIP_USER_SETUP=1 ports: - '8123:8123' - '8443:8443' - '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 extra_hosts: - 'host.docker.internal:host-gateway' depends_on: - kafka - zookeeper zookeeper: extends: file: docker-compose.base.yml service: zookeeper ports: - '2181:2181' kafka: extends: file: docker-compose.base.yml service: kafka ports: - '9092:9092' depends_on: - zookeeper kafka_ui: extends: file: docker-compose.base.yml service: kafka_ui ports: - '9093:8080' depends_on: - kafka objectstorage: extends: file: docker-compose.base.yml service: objectstorage ports: - '19000:19000' - '19001:19001' maildev: extends: file: docker-compose.base.yml service: maildev ports: - '1080:1080' - '1025:1025' webhook-tester: image: tarampampam/webhook-tester:1.1.0 restart: on-failure ports: - '2080:2080' environment: - LISTEN_PORT=2080 echo_server: extends: file: docker-compose.base.yml service: echo_server expose: - '18081:18081' feature-flags: extends: file: docker-compose.base.yml service: feature-flags depends_on: - redis - db livestream: extends: file: docker-compose.base.yml service: livestream environment: - LIVESTREAM_JWT_SECRET=${SECRET_KEY} ports: - '8666:8080' volumes: - ./docker/livestream/configs-dev.yml:/configs/configs.yml # Temporal containers elasticsearch: extends: file: docker-compose.base.yml service: elasticsearch expose: - 9200 temporal: extends: file: docker-compose.base.yml service: temporal 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 depends_on: temporal: condition: service_started db: condition: service_healthy otel-collector: extends: file: docker-compose.base.yml service: otel-collector depends_on: - jaeger jaeger: extends: file: docker-compose.base.yml service: jaeger networks: otel_network: driver: bridge