{"id":19293989,"url":"https://github.com/igrishaev/kafka-supervisor","last_synced_at":"2026-04-17T13:31:17.211Z","repository":{"id":147470221,"uuid":"367921142","full_name":"igrishaev/kafka-supervisor","owner":"igrishaev","description":null,"archived":false,"fork":false,"pushed_at":"2022-02-04T13:08:58.000Z","size":6,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-24T00:26:02.797Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Clojure","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/igrishaev.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-16T15:38:13.000Z","updated_at":"2022-01-21T15:18:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"21b0175b-646d-4e5c-a3d0-5a8315b28463","html_url":"https://github.com/igrishaev/kafka-supervisor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/igrishaev/kafka-supervisor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrishaev%2Fkafka-supervisor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrishaev%2Fkafka-supervisor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrishaev%2Fkafka-supervisor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrishaev%2Fkafka-supervisor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/igrishaev","download_url":"https://codeload.github.com/igrishaev/kafka-supervisor/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/igrishaev%2Fkafka-supervisor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31931199,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-17T12:37:54.787Z","status":"ssl_error","status_checked_at":"2026-04-17T12:37:25.095Z","response_time":62,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":[],"created_at":"2024-11-09T22:36:47.088Z","updated_at":"2026-04-17T13:31:17.192Z","avatar_url":"https://github.com/igrishaev.png","language":"Clojure","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n# Kafka-Supervisor\n\n[spotify-kafka]: https://github.com/spotify/docker-kafka\n\nThis image brings the standard, non-Confluent Kafka installation. The main\nfeature of the image is that all Zookeeper, Kafka and Connect are run within a\nsingle container. Namelly, if you run it, you'll get all the three at once\nwithout composing them manually out from separated images.\n\nAlthough this approach breaks Docker best practices (one process -- one image),\nit dramatically simplifies the installation. A typical `docker-compose.yml` for\nKafka takes a couple of screens whereas this image does most of work for\nyou. The idea was borrowed from a [Kafka image from Spotify][spotify-kafka] that\nhas been quite popular and got 1.4K stars so far in favor its\nsimplicity. Nowadays, the project is archived.\n\nAll the processes are served with Supervisor. For each subsystem, there is a\n`.conf` file in the `docker/etc/supervisor/conf.d` directory. All the logs go to\nthe standard OUT/ERR channels.\n\nThe image exposes the standard 2181, 9092, and 8083 ports for interaction with\nvarious Kafka subsystems.\n\nThe image is fully configurable with the env vars. We use the same approach that\nthey use in Confluent. Each var consist from a prefix and the rest part which\nbecomes a Kafka option. For example, a bunch of these vars:\n\n```yaml\nenvironment:\n  CONNECT_PLUGIN_PATH: /kafka/plugins\n  KAFKA_ADVERTISED_HOST_NAME: localhost\n  KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092\n  KAFKA_AUTO_CREATE_TOPICS_ENABLE: \"true\"\n  KAFKA_LISTENERS: PLAINTEXT://:9092\n```\n\nwill become the following Kafka options:\n\n```\nplugin.path = /kafka/plugins\nadvertised.host.name = localhost\nadvertised.listeners = PLAINTEXT://localhost:9092\nauto.create.topics.enable = \"true\"\nlisteners = plaintext://:9092\n```\n\nA prefix might be one of `KAFKA_`, `ZOOKEEPER_`, and `CONNECT_`. The names get\ntransformed to lower case, underscores become dots. The initial script scans the\nenv vars and saturates corresponding `.property` files from the `/kafka/config`\ndirectory with the values which names match the prefix.\n\nBuild a local image (check out the Makefile):\n\n```\nmake docker-build\n```\n\nRun it as a Docker process:\n\n```\ndocker run -it --rm -p 2181:2181 -p 9092:9092 -p 8083:8083 \u003cimage\u003e\n```\n\nPay attention, without configuring advertised hosts and listeners, Kafka's\nbehaviour is weird, e.g. you cannot create a topic, polling hangs, and so\non. Here is the list of recommended env vars on local machine:\n\n```yaml\nservices:\n  kafka:\n    environment:\n      CONNECT_PLUGIN_PATH: /kafka/plugins\n      KAFKA_ADVERTISED_HOST_NAME: localhost\n      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092\n      KAFKA_AUTO_CREATE_TOPICS_ENABLE: \"true\"\n      KAFKA_LISTENERS: PLAINTEXT://:9092\n```\n\nOn CI, you redefine some of them:\n\n```yaml\nservices:\n  kafka:\n    environment:\n      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092\n```\n\nThere is the `ENV` file in the repo which unites these settings.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figrishaev%2Fkafka-supervisor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Figrishaev%2Fkafka-supervisor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Figrishaev%2Fkafka-supervisor/lists"}