{"id":18951137,"url":"https://github.com/moukoublen/docker-kafka","last_synced_at":"2025-04-16T00:31:51.148Z","repository":{"id":65626667,"uuid":"318012132","full_name":"moukoublen/docker-kafka","owner":"moukoublen","description":"Kafka docker image","archived":false,"fork":false,"pushed_at":"2023-11-25T16:12:46.000Z","size":32,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2023-11-26T14:27:04.836Z","etag":null,"topics":["amd64","arm64","docker","kafka"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/moukoublen/kafka","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/moukoublen.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-12-02T22:48:25.000Z","updated_at":"2023-02-13T20:36:59.000Z","dependencies_parsed_at":"2023-11-25T14:26:48.134Z","dependency_job_id":"d260b5a7-1261-4d76-b393-6b693c8750f2","html_url":"https://github.com/moukoublen/docker-kafka","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moukoublen%2Fdocker-kafka","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moukoublen%2Fdocker-kafka/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moukoublen%2Fdocker-kafka/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/moukoublen%2Fdocker-kafka/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/moukoublen","download_url":"https://codeload.github.com/moukoublen/docker-kafka/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223691076,"owners_count":17186731,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["amd64","arm64","docker","kafka"],"created_at":"2024-11-08T13:26:32.767Z","updated_at":"2024-11-08T13:26:33.403Z","avatar_url":"https://github.com/moukoublen.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"Kafka Docker\n============\n\nKafka docker image using `OpenJDK` and more specifically `eclipse-temurin:21.0.1_12-jre-jammy` as base image.\nCurrently images are being produced for these os/arch:\n- `linux/amd64`\n- `linux/arm64/v8`\n\nDocker Hub: [https://hub.docker.com/r/moukoublen/kafka](https://hub.docker.com/r/moukoublen/kafka).\n\nGitHub: [https://github.com/moukoublen/docker-kafka](https://github.com/moukoublen/docker-kafka).\n\nBased on the excellent work of [wurstmeister/kafka](https://github.com/wurstmeister/kafka-docker)\n\n## Docker hub image tags\nSchema: `\u003ckafka version\u003e-\u003cscala version\u003e`\n\n### Tags\n- `3.6.0-2.13`, `latest`\n- `3.6.0-2.12`\n- `3.5.1-2.13`\n- `3.5.1-2.12`\n\n\n\n## Configs source `CONFIG_SOURCE`\n\n### Environment variables (`env`)\nIn order to use environment variables as configuration you must initialize env var `CONFIG_SOURCE` with `env` value (`CONFIG_SOURCE: env`).\n\nUse properties from [broker config](https://kafka.apache.org/documentation/#brokerconfigs) directly as environment variables with `server.` prefix. Also log4j properties can be used direclty using `log4j.` prefix.\n\nTable of environment variables prefix and destination file.\n\n| Prefix   | Destination file                         |\n|----------|------------------------------------------|\n| `server` | `${KAFKA_HOME}/config/server.properties` |\n| `log4j`  | `${KAFKA_HOME}/config/log4j.properties\"` |\n\n\n```yml\nversion: '3.8'\nservices:\n\n  kafka:\n    image: moukoublen/kafka\n    ports:\n      - \"9094:9094\"\n    environment:\n      KAFKA_HEAP_OPTS: -Xmx2g -Xms2g\n      CONFIG_SOURCE: env\n      server.broker.id: 1\n      server.zookeeper.connect: zookeeper:2181\n      server.listeners: INSIDE://kafka:9092,OUTSIDE://kafka:9094\n      server.advertised.listeners: INSIDE://kafka:9092,OUTSIDE://localhost:9094\n      server.listener.security.protocol.map: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT\n      server.inter.broker.listener.name: INSIDE\n      server.auto.create.topics.enable: \"false\"\n      log4j.logger.kafka: DEBUG\n      log4j.logger.org.apache.kafka: DEBUG\n    restart: on-failure\n```\n\n### Files (`files`)\nBy setting `CONFIG_SOURCE` to `files` (e.g. `CONFIG_SOURCE: files`) conf files remain untouched and can be passed as link.\n\n```yml\nversion: '3.8'\nservices:\n\n  kafka:\n    image: moukoublen/kafka\n    ports:\n      - \"9094:9094\"\n    environment:\n      KAFKA_HEAP_OPTS: -Xmx2g -Xms2g\n      CONFIG_SOURCE: files\n    volumes:\n      - $PWD/config/server.properties:/opt/kafka/config/server.properties\n      - $PWD/config/log4j.properties:/opt/kafka/config/log4j.properties\n    restart: on-failure\n```\n\n## Topics seeding in docker compose\nAn easy way to create topics using docker compose is this:\n\n```yml\nservices:\n  zookeeper:\n    # ...\n  kafka:\n    # ...\n    environment:\n      server.listeners: INSIDE://kafka:9092,OUTSIDE://kafka:9094\n      server.advertised.listeners: INSIDE://kafka:9092,OUTSIDE://localhost:9094\n      # ...\n\n  topics-seed:\n    image: moukoublen/kafka:latest\n    restart: on-failure\n    command: \u003e\n      bash -c \"set -ex\n      kafka-topics.sh --bootstrap-server 'INSIDE://kafka:9092' --create --topic samples1 --if-not-exists\n      \"\n```\n\nCheck [single-kafka.yml](compose/single-kafka.yml) and [kraft-cluster.yml](compose/kraft-cluster.yml) for example.\n\n\n## Docker compose examples\n\nSingle kafka node\n```shell\ndocker compose -f compose/single-kafka.yml up\n```\n\nCluster with zookeeper\n```shell\ndocker compose -f compose/cluster-kafka.yml up\n```\n\nKraft cluster (with external mounting of kafka log directory)\n```shell\nmkdir -p ./compose/logs/kraft-kafka{1,2,3}\ndocker compose -f compose/kraft-cluster.yml up\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoukoublen%2Fdocker-kafka","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmoukoublen%2Fdocker-kafka","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmoukoublen%2Fdocker-kafka/lists"}