diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index dd05287..e0424a3 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -52,3 +52,7 @@ jobs: - name: run test full-stack 8 run: ./test.sh full-stack.yml 8 + + - name: run test conduktor-kafka-single 3 + run: ./test.sh conduktor-kafka-single.yml 3 + diff --git a/README.md b/README.md index 4bea24a..f52f5b7 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,20 @@ docker compose -f full-stack.yml up docker compose -f full-stack.yml down ``` +## Single Kafka (KRaft mode) + Conduktor + +This configuration fits most development requirements. + + - Kafka will be available at `$DOCKER_HOST_IP:9092` + - Conduktor will be available at : `$DOCKER_HOST_IP:8080` + +Run with: +``` +docker compose -f conduktor-kafka-single.yml up +docker compose -f conduktor-kafka-single.yml down +``` + + ## Single Zookeeper / Single Kafka This configuration fits most development requirements. diff --git a/conduktor-kafka-single.yml b/conduktor-kafka-single.yml new file mode 100644 index 0000000..5c0637a --- /dev/null +++ b/conduktor-kafka-single.yml @@ -0,0 +1,53 @@ +services: + postgresql: + image: postgres:14 + hostname: postgresql + volumes: + - pg_data:/var/lib/postgresql/data + environment: + POSTGRES_DB: "conduktor-console" + POSTGRES_USER: "conduktor" + POSTGRES_PASSWORD: "some_password" + POSTGRES_HOST_AUTH_METHOD: "scram-sha-256" + conduktor-console: + image: conduktor/conduktor-console:1.36.2 + ports: + - "8080:8080" + volumes: + - conduktor_data:/var/conduktor + environment: + CDK_DATABASE_URL: "postgresql://conduktor:some_password@postgresql:5432/conduktor-console" + CDK_CLUSTERS_0_ID: "default" + CDK_CLUSTERS_0_NAME: "My Local Kafka Cluster" + CDK_CLUSTERS_0_COLOR: "#0013E7" + CDK_CLUSTERS_0_BOOTSTRAPSERVERS: "PLAINTEXT://kafka1:19092" + # CONSOLE_JAVA_OPTS: "-XX:UseSVE=0" + kafka1: + image: confluentinc/cp-kafka:8.0.0 + hostname: kafka1 + container_name: kafka1 + ports: + - "9092:9092" + - "29092:29092" + - "9999:9999" # JMX Port + - "9099:9099" # Internal inter-broker communication + environment: + environment: + CLUSTER_ID: MkU3OEVBNTcwNTJENDM2Qk + KAFKA_NODE_ID: 1 + KAFKA_PROCESS_ROLES: broker,controller + KAFKA_CONTROLLER_QUORUM_VOTERS: "1@kafka1:9099" + KAFKA_LISTENERS: INTERNAL://0.0.0.0:19092,EXTERNAL://0.0.0.0:9092,DOCKER://0.0.0.0:29092,CONTROLLER://0.0.0.0:9099 + KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka1:19092,EXTERNAL://${DOCKER_HOST_IP:-127.0.0.1}:9092,DOCKER://host.docker.internal:29092 + KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT,DOCKER:PLAINTEXT,CONTROLLER:PLAINTEXT + KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER + KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL + KAFKA_LOG4J_LOGGERS: "kafka.controller=INFO,kafka.producer.async.DefaultEventHandler=INFO,state.change.logger=INFO" + KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 + KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1 + KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1 + KAFKA_AUTHORIZER_CLASS_NAME: org.apache.kafka.metadata.authorizer.StandardAuthorizer + KAFKA_ALLOW_EVERYONE_IF_NO_ACL_FOUND: "true" +volumes: + pg_data: {} + conduktor_data: {} \ No newline at end of file