Skip to content

Instantly share code, notes, and snippets.

@ram-pi
Last active September 26, 2024 12:04
Show Gist options
  • Save ram-pi/6e67f2a170be24a361b17a0e4626ebf5 to your computer and use it in GitHub Desktop.
Save ram-pi/6e67f2a170be24a361b17a0e4626ebf5 to your computer and use it in GitHub Desktop.
Connect on Docker with Kafka on CCloud
---
services:
kafka-connect:
image: confluentinc/cp-server-connect:7.7.1
hostname: kafka-connect
container_name: kafka-connect
healthcheck:
test: curl -fail --silent http://kafka-connect-1:8083/connectors --output /dev/null || exit 1
interval: 10s
retries: 20
start_period: 20s
environment:
CONNECT_REST_ADVERTISED_PORT: 8083
CONNECT_REST_PORT: 8083
CONNECT_LISTENERS: http://0.0.0.0:8083
CONNECT_BOOTSTRAP_SERVERS: ${CCLOUD_BOOTSTRAP_SERVER}
CONNECT_SECURITY_PROTOCOL: SASL_SSL
CONNECT_SASL_MECHANISM: PLAIN
CONNECT_SASL_JAAS_CONFIG: "org.apache.kafka.common.security.plain.PlainLoginModule required username='${CCLOUD_API_KEY}' password='${CCLOUD_API_SECRET}';"
CONNECT_REST_ADVERTISED_HOST_NAME: kafka-connect
CONNECT_GROUP_ID: workshop-pier-kafka-connect
CONNECT_CONFIG_STORAGE_TOPIC: workshop-pier-connect-configs
CONNECT_OFFSET_STORAGE_TOPIC: workshop-pier-connect-offsets
CONNECT_STATUS_STORAGE_TOPIC: workshop-pier-connect-status
CONNECT_KEY_CONVERTER: org.apache.kafka.connect.storage.StringConverter
CONNECT_VALUE_CONVERTER: io.confluent.connect.avro.AvroConverter
CONNECT_EXACTLY_ONCE_SOURCE_SUPPORT: enabled
CONNECT_VALUE_CONVERTER_SCHEMA_REGISTRY_URL: ${SR_URL}
CONNECT_VALUE_CONVERTER_CONNECT_BASIC_AUTH_CREDENTIALS_SOURCE: USER_INFO
CONNECT_VALUE_CONVERTER_CONNECT_BASIC_AUTH_USER_INFO: ${SR_BASIC_AUTH}
CONNECT_SCHEMA_REGISTRY_URL: ${SR_URL}
CONNECT_BASIC_AUTH_CREDENTIALS_SOURCE: USER_INFO
CONNECT_BASIC_AUTH_USER_INFO: ${SR_BASIC_AUTH}
CONNECT_CONFIG_STORAGE_REPLICATION_FACTOR: 3
CONNECT_OFFSET_STORAGE_REPLICATION_FACTOR: 3
CONNECT_STATUS_STORAGE_REPLICATION_FACTOR: 3
CONNECT_TOPIC_CREATION_ENABLE: true
CONNECT_PLUGIN_PATH: /usr/share/java,/usr/share/confluent-hub-components,/data/connect-plugin-jars
# BRIDGE TO CLOUD
CONNECT_PRODUCER_BOOTSTRAP_SERVERS: ${CCLOUD_BOOTSTRAP_SERVER}
CONNECT_PRODUCER_SASL_JAAS_CONFIG: org.apache.kafka.common.security.plain.PlainLoginModule required username='${CCLOUD_API_KEY}' password='${CCLOUD_API_SECRET}';
CONNECT_PRODUCER_SECURITY_PROTOCOL: SASL_SSL
CONNECT_PRODUCER_SASL_MECHANISM: PLAIN
CONNECT_CONSUMER_BOOTSTRAP_SERVERS: ${CCLOUD_BOOTSTRAP_SERVER}
CONNECT_CONSUMER_SASL_JAAS_CONFIG: org.apache.kafka.common.security.plain.PlainLoginModule required username='${CCLOUD_API_KEY}' password='${CCLOUD_API_SECRET}';
CONNECT_CONSUMER_SECURITY_PROTOCOL: SASL_SSL
CONNECT_CONSUMER_SASL_MECHANISM: PLAIN
command:
- bash
- -c
- |
confluent-hub install --no-prompt mongodb/kafka-connect-mongodb:1.13.0
/etc/confluent/docker/run
ports:
- 8083:8083
ksqldb:
image: confluentinc/cp-ksqldb-server:7.7.1
hostname: ksqldb
container_name: ksqldb
healthcheck:
test: curl -fail --silent http://ksqldb:8088/healthcheck --output /dev/null || exit 1
interval: 10s
retries: 20
start_period: 20s
environment:
KSQL_LISTENERS: http://0.0.0.0:8088
KSQL_KSQL_STREAMS_BOOTSTRAP_SERVERS: ${CCLOUD_BOOTSTRAP_SERVER}
KSQL_KSQL_SASL_JAAS_CONFIG: org.apache.kafka.common.security.plain.PlainLoginModule required username='${CCLOUD_API_KEY}' password='${CCLOUD_API_SECRET}';
KSQL_KSQL_SECURITY_PROTOCOL: SASL_SSL
KSQL_KSQL_SASL_MECHANISM: PLAIN
KSQL_BOOTSTRAP_SERVERS: ${CCLOUD_BOOTSTRAP_SERVER}
KSQL_SASL_JAAS_CONFIG: org.apache.kafka.common.security.plain.PlainLoginModule required username='${CCLOUD_API_KEY}' password='${CCLOUD_API_SECRET}';
KSQL_SECURITY_PROTOCOL: SASL_SSL
KSQL_SASL_MECHANISM: PLAIN
KSQL_KSQL_LOGGING_PROCESSING_STREAM_AUTO_CREATE: true
KSQL_KSQL_LOGGING_PROCESSING_TOPIC_AUTO_CREATE: true
KSQL_KSQL_CONNECT_URL: http://kafka-connect:8083
KSQL_KSQL_SCHEMA_REGISTRY_URL: ${SR_URL}
KSQL_KSQL_SCHEMA_REGISTRY_BASIC_AUTH_CREDENTIALS_SOURCE: USER_INFO
KSQL_KSQL_SCHEMA_REGISTRY_BASIC_AUTH_USER_INFO: ${SR_BASIC_AUTH}
KSQL_KSQL_SERVICE_ID: my-ksqldb
KSQL_KSQL_HIDDEN_TOPICS: ^_.*
KSQL_KSQL_INTERNAL_TOPICS_REPLICAS: 3
KSQL_KSQL_LOGGING_PROCESSING_TOPIC_REPLICATION_FACTOR: 3
KSQL_INTERNAL_TOPICS_REPLICAS: 3
KSQL_LOGGING_PROCESSING_TOPIC_REPLICATION_FACTOR: 3
KSQL_KSQL_SINK_REPLICAS: 3
KSQL_KSQL_STREAMS_REPLICATION_FACTOR: 3
KSQL_KSQL_INTERNAL_TOPIC_REPLICAS: 3
ports:
- 8088:8088
@ram-pi
Copy link
Author

ram-pi commented Sep 25, 2024

Create an .env file like the one below:

CCLOUD_BOOTSTRAP_SERVER=
CCLOUD_API_KEY=
CCLOUD_API_SECRET=
SR_URL=
SR_BASIC_AUTH=

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment