# This docker-compose is only to get started with Conduktor. # It is starting Conduktor, a Redpanda cluster (Kafka), and a fake app to generate traffic. # Go to http://localhost:8080 when started #################################################################################################### # DO NOT USE IT IN PRODUCTION # # For production, please check: https://docs.conduktor.io/platform/category/deployment-options/ # to deploy on Kubernetes via Helm, or AWS using Cloudformation. #################################################################################################### services: # Conduktor Console, the enterprise UI. # It depends on PostgreSQL. Here, we depend on Redpanda only for our get-started. # https://docs.conduktor.io/platform/get-started/configuration/introduction/ conduktor-console: image: conduktor/conduktor-console:1.29.1 ports: - "8080:8080" volumes: - conduktor_data:/var/conduktor environment: CDK_DATABASE_URL: "postgresql://conduktor:change_me@postgresql:5432/conduktor-console" CDK_KAFKASQL_DATABASE_URL: "postgresql://conduktor:change_me@postgresql-sql:5432/conduktor-sql" CDK_ORGANIZATION_NAME: "getting-started" CDK_CLUSTERS_0_ID: "local-kafka" CDK_CLUSTERS_0_NAME: "local-kafka" CDK_CLUSTERS_0_BOOTSTRAPSERVERS: "redpanda-0:9092" CDK_CLUSTERS_0_SCHEMAREGISTRY_URL: "http://redpanda-0:18081" CDK_CLUSTERS_0_COLOR: "#6A57C8" CDK_CLUSTERS_0_ICON: "kafka" CDK_CLUSTERS_1_ID: "cdk-gateway" CDK_CLUSTERS_1_NAME: "cdk-gateway" CDK_CLUSTERS_1_BOOTSTRAPSERVERS: "conduktor-gateway:6969" CDK_CLUSTERS_1_SCHEMAREGISTRY_URL: "http://redpanda-0:18081" CDK_CLUSTERS_1_KAFKAFLAVOR_URL: "http://conduktor-gateway:8888" CDK_CLUSTERS_1_KAFKAFLAVOR_USER: "admin" CDK_CLUSTERS_1_KAFKAFLAVOR_PASSWORD: "conduktor" CDK_CLUSTERS_1_KAFKAFLAVOR_VIRTUALCLUSTER: "passthrough" CDK_CLUSTERS_1_KAFKAFLAVOR_TYPE: "Gateway" CDK_CLUSTERS_1_COLOR: "#6A57C8" CDK_CLUSTERS_1_ICON: "dog" CDK_MONITORING_CORTEX-URL: http://conduktor-monitoring:9009/ CDK_MONITORING_ALERT-MANAGER-URL: http://conduktor-monitoring:9010/ CDK_MONITORING_CALLBACK-URL: http://conduktor-console:8080/monitoring/api/ CDK_MONITORING_NOTIFICATIONS-CALLBACK-URL: http://localhost:8080 depends_on: redpanda-0: condition: service_healthy postgresql: condition: service_healthy postgresql-2: condition: service_healthy # Conduktor stores its metadata in PostgreSQL. # Consider using an external managed database for production usage. # https://docs.conduktor.io/platform/get-started/configuration/database/ postgresql: image: postgres:14 hostname: postgresql volumes: - pg_data:/var/lib/postgresql/data environment: PGDATA: "/var/lib/postgresql/data" POSTGRES_DB: "conduktor-console" POSTGRES_USER: "conduktor" POSTGRES_PASSWORD: "change_me" POSTGRES_HOST_AUTH_METHOD: "scram-sha-256" healthcheck: test: [ "CMD-SHELL", "pg_isready" ] interval: 10s timeout: 5s retries: 5 # Conduktor depends on a separate db for storing Kafka data for SQL querying # It is optional, but required if you wish to use SQL functionality # Separate db ensures continued operation of the core Console experience if the SQL db becomes unavailable # https://docs.conduktor.io/platform/guides/configure-sql/ postgresql-2: image: postgres:14 hostname: postgresql-sql volumes: - pg_data_sql:/var/lib/postgresql/data environment: PGDATA: "/var/lib/postgresql/data" POSTGRES_DB: "conduktor-sql" POSTGRES_USER: "conduktor" POSTGRES_PASSWORD: "change_me" POSTGRES_HOST_AUTH_METHOD: "scram-sha-256" healthcheck: test: [ "CMD-SHELL", "pg_isready" ] interval: 10s timeout: 5s retries: 5 # Conduktor uses Cortex to store Kafka and applications metrics as well as alerting. # It is optional. # https://docs.conduktor.io/platform/get-started/configuration/cortex/ conduktor-monitoring: image: conduktor/conduktor-console-cortex:1.29.1 environment: CDK_CONSOLE-URL: "http://conduktor-console:8080" # We use Redpanda to get started with Kafka as it's small and efficient. # This is an example here. For production, connect Conduktor to your own Kafka clusters. redpanda-0: command: - redpanda - start - --kafka-addr internal://0.0.0.0:9092,external://0.0.0.0:19092 - --advertise-kafka-addr internal://redpanda-0:9092,external://localhost:19092 - --pandaproxy-addr internal://0.0.0.0:8082,external://0.0.0.0:18082 # Address the broker advertises to clients that connect to the HTTP Proxy. - --advertise-pandaproxy-addr internal://redpanda-0:8082,external://localhost:18082 - --schema-registry-addr internal://0.0.0.0:8081,external://0.0.0.0:18081 # Redpanda brokers use the RPC API to communicate with eachother internally. - --rpc-addr redpanda-0:33145 - --advertise-rpc-addr redpanda-0:33145 - --smp 1 - --memory 1G - --mode dev-container - --default-log-level=info image: docker.redpanda.com/redpandadata/redpanda:v24.1.6 container_name: redpanda-0 volumes: - redpanda-0:/var/lib/redpanda/data ports: - 18081:18081 - 18082:18082 - 19092:19092 - 19644:9644 healthcheck: test: ["CMD-SHELL", "rpk cluster health | grep -E 'Healthy:.+true' || exit 1"] interval: 15s timeout: 3s retries: 5 start_period: 5s # Conduktor comes with its Gateway, a Kafka proxy bringing many security and governance features. # In this get started, Gateway uses Redpanda as its backend Kafka cluster. # https://docs.conduktor.io/gateway/ conduktor-gateway: image: conduktor/conduktor-gateway:3.4.0 hostname: conduktor-gateway container_name: conduktor-gateway environment: KAFKA_BOOTSTRAP_SERVERS: redpanda-0:9092 ports: - "8888:8888" healthcheck: test: curl localhost:8888/health interval: 5s retries: 25 depends_on: redpanda-0: condition: service_healthy # As this is a get started, we want to bring some life to the cluster to demonstrate the value of Conduktor. # This is totally optional and only used for this purpose. Do not use it in production. conduktor-data-generator: image: conduktor/conduktor-data-generator:0.6 container_name: conduktor-data-generator environment: KAFKA_BOOTSTRAP_SERVERS: conduktor-gateway:6969 KAFKA_SCHEMA_REGISTRY_URL: http://redpanda-0:8081 GATEWAY_ADMIN_API: http://conduktor-gateway:8888 restart: on-failure depends_on: redpanda-0: condition: service_healthy conduktor-gateway: condition: service_healthy volumes: pg_data: {} pg_data_sql: {} conduktor_data: {} redpanda-0: {}