{"id":16284984,"url":"https://github.com/goodforgod/docker-compose-ultimate","last_synced_at":"2025-03-20T02:31:22.797Z","repository":{"id":85770283,"uuid":"237075444","full_name":"GoodforGod/docker-compose-ultimate","owner":"GoodforGod","description":"🌀 Ultimate Docker Compose to rule them all.","archived":false,"fork":false,"pushed_at":"2022-04-02T10:50:22.000Z","size":108,"stargazers_count":33,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-17T13:46:25.527Z","etag":null,"topics":["arangodb","camunda","clickhouse","docker","docker-compose","graphql-apollo","infinispan","jaeger","janusgraph","kafka","ksql","minio","mongodb","postgres","redash","redis","zookeeper"],"latest_commit_sha":null,"homepage":"","language":null,"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/GoodforGod.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":"2020-01-29T20:27:03.000Z","updated_at":"2025-03-11T15:10:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"1f258e1f-1966-40e6-8d25-31915ce55b26","html_url":"https://github.com/GoodforGod/docker-compose-ultimate","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fdocker-compose-ultimate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fdocker-compose-ultimate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fdocker-compose-ultimate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/GoodforGod%2Fdocker-compose-ultimate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/GoodforGod","download_url":"https://codeload.github.com/GoodforGod/docker-compose-ultimate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244538588,"owners_count":20468745,"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":["arangodb","camunda","clickhouse","docker","docker-compose","graphql-apollo","infinispan","jaeger","janusgraph","kafka","ksql","minio","mongodb","postgres","redash","redis","zookeeper"],"created_at":"2024-10-10T19:21:48.604Z","updated_at":"2025-03-20T02:31:22.416Z","avatar_url":"https://github.com/GoodforGod.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ultimate Docker Compose for (Kafka, Zookeeper, KSQL, Postgres, Camunda, MongoDB, ArangoDB, Oracle, ClickHouse, Jaeger and more)\n\n*Docker Compose Version 2.3* for all services that I was working with or configured while development.\n\nJust in case I need to *ready-to-run* them all, so I can do it as *Docker-Compose*.\n\nThis README can be used as builder, you can just copy services you need for your *docker-compose.yml*\nAll services are configured to use each other as dependencies.\n\n- [RDBMS:](#RDBMS)\n    - [Postgres:](#Postgres)\n        - [PG Admin 4](#Postgres-Admin)\n    - [Oracle](#Oracle)\n    - [Cockroach](#Cockroach)\n\n\n- [Document Oriented](#Document-Oriented)\n    - [MongoDB](#MongoDB)\n    - [ArangoDB](#ArangoDB)\n    - [ArangoDB Cluster](#ArangoDB-Cluster)\n\n\n- [Key Value:](#Key-Value)\n    - [Redis](#Redis)\n        - [CLI](#Redis-CLI)\n    - [Infinispan](#Infinispan)\n    - [Hazelcast](#Hazelcast)\n\n\n- [Column-oriented DBMS:](#Column-Oriented-DBMS)\n    - [Cassandra](#Cassandra)\n    - [ClickHouse:](#ClickHouse)\n        - [CLI](#ClickHouse-CLI)\n        - [Redash](#Redash)\n\n\n- [Graph Databases:](#Graph-Databases)\n    - [JanusGraph](#JanusGraph)\n    - [ArangoDB](#ArangoDB-Graph)\n\n\n- [Search Engines:](#Search-Engines)\n    - [ElasticSearch](#ElasticSearch)\n    - [ArangoDB](#ArangoDB-Search)\n\n\n- [Kafka infrastructure:](#Kafka-infrastructure)\n    - [Kafka](#Kafka)\n    - [Zookeeper](#Zookeeper)\n    - [Kafka Topics](#Kafka-Topics)\n    - [Kafka REST](#Kafka-REST)\n    - [Schema Registry](#Schema-Registry)\n    - [KSQL:](#KSQL)\n        - [Client](#KSQL-Client)\n        - [Control Center](#KSQL-Control-Center)\n\n\n- [Message Brokers:](#message-brokers)\n    - [Kafka](#kafka)\n    - [NATS](#nats)\n\n\n- [Big Data:](#Big-Data)\n    - [Apache Nifi](#Apache-Nifi)\n\n\n- [BPMN:](#bpmn)\n  - [Camunda](#camunda)\n\n\n- [Infrastructure:](#Infrastructure)\n    - [Minio (S3)](#Minio)\n    - [Jaeger](#Jaeger)\n    - [PACT Broker](#PACT-Broker)\n    - [SonarQube](#SonarQube)\n    - [Apache Atlas](#Apache-Atlas)\n    - [GraphQL Apollo Federation](#GraphQL-Apollo-Federation)\n\n\n## Databases\n\n### RDBMS\n\nRDBMS stands for Relational Database Management System. \nRDBMS is the basis for SQL, and for all modern database systems like Postgres, Oracle, MySQL and etc.\n\n#### Postgres\n\nFor more info - [check here](https://hub.docker.com/_/postgres/).\n\n```dockerfile\nversion: '2.3'\nservices:\n  postgres:\n    image: postgres:13-alpine3.15\n    restart: unless-stopped\n    ports:\n      - '5432:5432'\n    environment:\n      POSTGRES_DB: postgres\n      POSTGRES_USER: postgres\n      POSTGRES_PASSWORD: postgres\n```\n\n##### Postgres Admin\n\nFor more info - [check here](https://hub.docker.com/r/dpage/pgadmin4).\n\nDepends on [Postgres](#Postgres).\n\n```dockerfile\nversion: '2.3'\nservices:\n  pgadmin4:\n    image: dpage/pgadmin4:6.5\n    restart: unless-stopped\n    ports:\n      - '8010:80'\n    depends_on:\n      - postgres\n    environment:\n      PGADMIN_DEFAULT_EMAIL: ma@il.com\n      PGADMIN_DEFAULT_PASSWORD: postgres\n```\n\n#### Oracle\n\nFor more info - [check here](https://hub.docker.com/_/oracle-database-enterprise-edition).\n\n```dockerfile\nversion: '2.3'\nservices:\n  oracle:\n    image: store/oracle/database-enterprise:12.2.0.1\n    restart: unless-stopped\n    ports:\n      - '1521:1521'\n      - '5500:5500'\n```\n\n#### Cockroach\n\nFor more info - [check here](https://hub.docker.com/r/cockroachdb/cockroach).\n\n```dockerfile\nversion: '2.3'\nservices:\n  cockroach:\n    image: cockroachdb/cockroach:v21.2.6\n    restart: unless-stopped\n    command: start-single-node --insecure\n    ports:\n      - '26257:26257'\n      - '8082:8080'\n```\n\n### Document Oriented\n\nDocument store databases store each record and its associated data within a single document. \nEach document contains semi-structured data that can be queried against using various query and analytics tools of the DBMS.\n\n#### MongoDB\n\nFor more info - [check here](https://hub.docker.com/_/mongo).\n\n```dockerfile\nversion: '2.3'\nservices:\n  mongo:\n    image: mongo:5.0.6\n    restart: unless-stopped\n    ports:\n      - '27017:27017'\n    environment:\n      MONGO_INITDB_ROOT_USERNAME: mongo\n      MONGO_INITDB_ROOT_PASSWORD: mongo\n      MONGO_INITDB_DATABASE: public\n```\n\n#### ArangoDB\n\nFor more info - [check here](https://hub.docker.com/_/arangodb).\n\n```dockerfile\nversion: '2.3'\nservices:\n  arangodb:\n    image: arangodb:3.7.11\n    restart: unless-stopped\n    ports:\n      - '8529:8529'\n    environment:\n      ARANGO_NO_AUTH: 1\n```\n\n##### ArangoDB Cluster\n\nFor more info - [check here](https://www.arangodb.com/docs/stable/architecture-deployment-modes-cluster.html).\n\n```dockerfile\nversion: '2.3'\nservices:\n  arangodb-agent1:\n    image: arangodb/arangodb:3.7.11\n    restart: unless-stopped\n    environment:\n      ARANGO_NO_AUTH: 1\n    command: 'arangod --server.authentication false\n              --agency.my-address tcp://arangodb-agent1:8529\n              --agency.endpoint tcp://arangodb-agent1:8529\n              --server.endpoint tcp://0.0.0.0:8529\n              --agency.activate true\n              --agency.size 3\n              --agency.supervision true\n              --database.directory /var/lib/arangodb3/agency1'\n\n  arangodb-agent2:\n    image: arangodb/arangodb:3.7.11\n    restart: unless-stopped\n    environment:\n      ARANGO_NO_AUTH: 1\n    command: 'arangod --server.authentication false\n              --agency.my-address tcp://arangodb-agent2:8529\n              --agency.endpoint tcp://arangodb-agent1:8529\n              --server.endpoint tcp://0.0.0.0:8529\n              --agency.activate true\n              --agency.size 3\n              --agency.supervision true\n              --database.directory /var/lib/arangodb3/agency2'\n    depends_on:\n      - arangodb-agent1\n\n  arangodb-agent3:\n    image: arangodb/arangodb:3.7.11\n    restart: unless-stopped\n    environment:\n      ARANGO_NO_AUTH: 1\n    command: 'arangod --server.authentication false\n              --agency.my-address tcp://arangodb-agent3:8529\n              --agency.endpoint tcp://arangodb-agent1:8529\n              --server.endpoint tcp://0.0.0.0:8529\n              --agency.activate true\n              --agency.size 3\n              --agency.supervision true\n              --database.directory /var/lib/arangodb3/agency3'\n    depends_on:\n      - arangodb-agent1\n\n  arangodb-coordinator1:\n    image: arangodb/arangodb:3.7.11\n    restart: unless-stopped\n    environment:\n      ARANGO_NO_AUTH: 1\n    command: 'arangod --server.authentication=false\n              --cluster.my-address tcp://arangodb-coordinator1:8529\n              --cluster.agency-endpoint tcp://arangodb-agent1:8529\n              --server.endpoint tcp://0.0.0.0:8529\n              --cluster.my-local-info coord1\n              --cluster.my-role COORDINATOR\n              --database.directory /var/lib/arangodb3/arangodb-coordinator1'\n    ports:\n      - '8529:8529'\n    depends_on:\n      - arangodb-agent1\n      - arangodb-agent2\n      - arangodb-agent3\n\n  arangodb-coordinator2:\n    image: arangodb/arangodb:3.7.11\n    restart: unless-stopped\n    environment:\n      ARANGO_NO_AUTH: 1\n    command: 'arangod --server.authentication=false\n              --cluster.my-address tcp://arangodb-coordinator2:8529\n              --cluster.agency-endpoint tcp://arangodb-agent1:8529\n              --server.endpoint tcp://0.0.0.0:8529\n              --cluster.my-local-info coord2\n              --cluster.my-role COORDINATOR\n              --database.directory /var/lib/arangodb3/arangodb-coordinator2'\n    depends_on:\n      - arangodb-agent1\n      - arangodb-agent2\n      - arangodb-agent3\n\n  arangodb-coordinator3:\n    image: arangodb/arangodb:3.7.11\n    restart: unless-stopped\n    environment:\n      ARANGO_NO_AUTH: 1\n    command: 'arangod --server.authentication=false\n              --cluster.my-address tcp://arangodb-coordinator3:8529\n              --cluster.agency-endpoint tcp://arangodb-agent1:8529\n              --server.endpoint tcp://0.0.0.0:8529\n              --cluster.my-local-info coord3\n              --cluster.my-role COORDINATOR\n              --database.directory /var/lib/arangodb3/arangodb-coordinator3'\n    depends_on:\n      - arangodb-agent1\n      - arangodb-agent2\n      - arangodb-agent3\n\n  arangodb-db1:\n    image: arangodb/arangodb:3.7.11\n    restart: unless-stopped\n    environment:\n      ARANGO_NO_AUTH: 1\n    command: 'arangod --server.authentication=false\n              --cluster.my-address tcp://arangodb-db1:8529\n              --cluster.agency-endpoint tcp://arangodb-agent1:8529\n              --server.endpoint tcp://0.0.0.0:8529\n              --cluster.my-local-info arangodb-db1\n              --cluster.my-role DBSERVER\n              --database.directory /var/lib/arangodb3/arangodb-db1'\n    depends_on:\n      - arangodb-agent1\n      - arangodb-agent2\n      - arangodb-agent3\n\n  arangodb-db2:\n    image: arangodb/arangodb:3.7.11\n    restart: unless-stopped\n    environment:\n      ARANGO_NO_AUTH: 1\n    command: 'arangod --server.authentication=false\n              --cluster.my-address tcp://arangodb-db2:8529\n              --cluster.agency-endpoint tcp://arangodb-agent1:8529\n              --server.endpoint tcp://0.0.0.0:8529\n              --cluster.my-local-info arangodb-db2\n              --cluster.my-role DBSERVER\n              --database.directory /var/lib/arangodb3/arangodb-db2'\n    depends_on:\n      - arangodb-agent1\n      - arangodb-agent2\n      - arangodb-agent3\n\n  arangodb-db3:\n    image: arangodb/arangodb:3.7.11\n    restart: unless-stopped\n    environment:\n      ARANGO_NO_AUTH: 1\n    command: 'arangod --server.authentication=false\n              --cluster.my-address tcp://arangodb-db3:8529\n              --cluster.agency-endpoint tcp://arangodb-agent1:8529\n              --server.endpoint tcp://0.0.0.0:8529\n              --cluster.my-local-info arangodb-db3\n              --cluster.my-role DBSERVER\n              --database.directory /var/lib/arangodb3/arangodb-db3'\n    depends_on:\n      - arangodb-agent1\n      - arangodb-agent2\n      - arangodb-agent3\n```\n\n### Key Value\n\nThe key-value part refers to the fact that the database stores data as a collection of key/value pairs. \nThis is a simple method of storing data, and it is known to scale well.\n\n#### Redis\n\nFor more info - [check here](https://hub.docker.com/_/redis).\n\n```dockerfile\nversion: '2.3'\nservices:\n  redis:\n    image: redis:6.2.6\n    restart: unless-stopped\n    ports:\n      - '6379:6379'\n    command: redis-server\n```\n\n##### Redis CLI\n\nFor more info - [check here](https://hub.docker.com/r/rediscommander/redis-commander).\n\nDepends on [Redis](#Redis).\n\n```dockerfile\nversion: '2.3'\nservices:\n  redis-commander:\n    image: rediscommander/redis-commander\n    restart: unless-stopped\n    ports:\n      - '6380:8081'\n    environment:\n      REDIS_HOSTS: local:redis:6379:0\n```\n\n#### Infinispan\n\nFor more info - [check here](https://hub.docker.com/r/infinispan/server).\n\n```dockerfile\nversion: '2.3'\nservices:\n  infinispan:\n    image: infinispan/server:14.0\n    restart: unless-stopped\n#    logging:\n#      driver: none\n    ports:\n      - '11222:11222'\n    environment:\n      USER: admin\n      PASS: admin\n```\n\n#### Hazelcast\n\nFor more info - [check here](https://hub.docker.com/r/hazelcast/hazelcast).\n\n```dockerfile\nversion: '2.3'\nservices:\n  hazelcast:\n    image: hazelcast/hazelcast:4.0.6\n    restart: unless-stopped\n#    logging:\n#      driver: none\n    ports:\n      - '5701:5701'\n    environment:\n      JAVA_OPTS: -Dhazelcast.shutdownhook.policy=GRACEFUL\n```\n\n### Column Oriented DBMS\n\nColumns store databases use a concept called a keyspace. A keyspace is kind of like a schema in the relational model. \nThe keyspace contains all the column families (kind of like tables in the relational model), which contain rows, which contain columns.\n\n#### Cassandra\n\nFor more info - [check here](https://hub.docker.com/_/cassandra).\n\n```dockerfile\nversion: '2.3'\nservices:\n  cassandra:\n    image: cassandra:4.0.3\n    restart: unless-stopped\n#    logging:\n#      driver: none\n    ports:\n      - '9160:9160'     # Thrift client API\n      - '9042:9042'     # CQL native transport port\n      - '7199:7199'     # JMX\n      - '7001:7001'     # TLS Internode communication\n      - '7000:7000'     # Internode communication\n    environment:\n      CASSANDRA_START_RPC: 'true'\n```\n\n#### ClickHouse\n\nFor more info - [check here](https://hub.docker.com/r/yandex/clickhouse-server).\n\n```dockerfile\nversion: '2.3'\nservices:\n  clickhouse-server:\n    image: yandex/clickhouse-server:21.3.20.1\n    restart: unless-stopped\n    ports:\n      - '8123:8123'\n      - '9000:9000'\n      - '9009:9009'\n    volumes:\n      - ./clickhouse/config.xml:/etc/clickhouse-server/config.xml\n      - ./clickhouse/users.xml:/etc/clickhouse-server/users.xml\n    healthcheck:\n      test: wget --no-verbose --tries=1 --spider localhost:8123/ping || exit 1\n      interval: 3s\n      timeout: 10s\n      retries: 5\n      start_period: 10s\n```\n\n##### ClickHouse CLI\n\nFor more info - [check here](https://hub.docker.com/r/yandex/clickhouse-client).\n\nDepends on [ClickHouse Server](#ClickHouse).\n\n```dockerfile\nversion: '2.3'\nservices:\n  clickhouse-client:\n    image: yandex/clickhouse-client:21.3.20.1\n    depends_on:\n      clickhouse-server:\n        condition: service_healthy\n    command: [ '--host', 'clickhouse-server', '--query', 'select * from system.functions order by name limit 4' ]\n```\n\n##### Redash\n\nRedash is an open-source data visualization tool used by companies as diverse as Soundcloud, Mozilla, and Waze. \nIt allows developers and analyts to query data, graph results, and share insights with others. \nThe best thing about Redash is that it is completely free to self-host.\n\nFor more info - [check here](https://hub.docker.com/r/redash/redash) and [here](https://github.com/getredash/redash/blob/master/docker-compose.yml).\n\nDepends on [ClickHouse Server](#ClickHouse).\n\n```dockerfile\nversion: '2.3'\nservices:\n  redash-createdb:\n    image: redash/redash:10.1.0.b50633\n    depends_on:\n      - redis\n      - postgres\n    command: create_db\n    environment:\n      PYTHONUNBUFFERED: 0\n      REDASH_RATELIMIT_ENABLED: 'false'\n      REDASH_LOG_LEVEL: INFO\n      REDASH_COOKIE_SECRET: secret\n      REDASH_SECRET_KEY: secret\n      REDASH_REDIS_URL: redis://redis:6379/0\n      REDASH_DATABASE_URL: postgresql://postgres:postgres@postgres/postgres\n\n\n  redash-server:\n    image: redash/redash:10.1.0.b50633\n    restart: unless-stopped\n    ports:\n      - '5000:5000'\n      - '5678:5678'\n    depends_on:\n      - redis\n      - postgres\n      - redash-createdb\n    command: server\n    environment:\n      PYTHONUNBUFFERED: 0\n      REDASH_RATELIMIT_ENABLED: 'false'\n      REDASH_LOG_LEVEL: INFO\n      REDASH_COOKIE_SECRET: secret\n      REDASH_SECRET_KEY: secret\n      REDASH_REDIS_URL: redis://redis:6379/0\n      REDASH_DATABASE_URL: postgresql://postgres:postgres@postgres/postgres\n\n\n  redash-scheduler:\n    image: redash/redash:10.1.0.b50633\n    restart: unless-stopped\n    depends_on:\n      - redis\n      - postgres\n      - redash-createdb\n    command: scheduler\n    environment:\n      PYTHONUNBUFFERED: 0\n      REDASH_RATELIMIT_ENABLED: 'false'\n      REDASH_LOG_LEVEL: INFO\n      REDASH_COOKIE_SECRET: secret\n      REDASH_SECRET_KEY: secret\n      REDASH_REDIS_URL: redis://redis:6379/0\n      REDASH_DATABASE_URL: postgresql://postgres:postgres@postgres/postgres\n\n\n  redash-worker:\n    image: redash/redash:10.1.0.b50633\n    restart: unless-stopped\n    depends_on:\n      - redis\n      - postgres\n      - redash-createdb\n    command: worker\n    environment:\n      PYTHONUNBUFFERED: 0\n      REDASH_RATELIMIT_ENABLED: 'false'\n      REDASH_LOG_LEVEL: INFO\n      REDASH_COOKIE_SECRET: secret\n      REDASH_SECRET_KEY: secret\n      REDASH_REDIS_URL: redis://redis:6379/0\n      REDASH_DATABASE_URL: postgresql://postgres:postgres@postgres/postgres\n```\n\n### Graph Databases\n\nA graph database is a database that uses a graphical model to represent and store the data.\nThe graph database model is an alternative to the relational model.\nIn a relational database, data is stored in tables using a rigid structure with a predefined schema.\nIn a graph database, there is no predefined schema as such. Rather, any schema is simply a reflection \nof the data that has been entered. As more varied data is entered, the schema grows accordingly.\n\n#### ArangoDB Graph\n\nArangoDB be used as graph, check for [more here](https://www.arangodb.com/docs/stable/aql/graphs-traversals-explained.html)\nand [here](https://www.arangodb.com/arangodb-training-center/graphs/).\n\nDocker Compose [here](#ArangoDB).\n\n### Search Engines\n\nSearch engines or databases or services that allow fulltext and other types of search on data using 3-grams and other methods.\n\n#### ElasticSearch\n\nFor more info - [check here](https://hub.docker.com/_/elasticsearch).\n\n```dockerfile\nversion: '2.3'\nservices:\n  elastic:\n    image: elasticsearch:7.6.1\n    restart: unless-stopped\n     ports:\n       - 9200:9200\n       - 9300:9300\n     environment:\n       discovery.type: single-node\n```\n\n#### ArangoDB Search\n\nArangoDB can be used as Search Engine, check for [more here](https://www.arangodb.com/arangodb-training-center/search/arangosearch/).\n\nDocker Compose [here](#ArangoDB).\n\n## Kafka infrastructure\n\nApache Kafka is a distributed streaming platform that is used to build real time streaming data pipelines \nand applications that adapt to data streams.\n\n### Kafka\n\nFor more info - [check here](https://hub.docker.com/r/confluentinc/cp-kafka).\n\nDepends on [Zookeeper](#Zookeeper).\n\n```dockerfile\nversion: '2.3'\nservices:\n  kafka:\n    image: confluentinc/cp-kafka:6.1.4\n    restart: \n    ports:\n      - '9092:9092'\n    depends_on:\n      zookeeper:\n        condition: service_healthy\n    environment:\n      KAFKA_BROKER_ID: 1\n      KAFKA_LOG4J_ROOT_LOGLEVEL: WARN\n      KAFKA_LOG4J_TOOLS_ROOT_LOGLEVEL: WARN\n      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181\n      # Option advertised.listeners {name://host:port} used so someone can access kafka outside of container\\cluster.\n      # 'kafka:29092' used by clickhouse-server inside docker-compose network, when 'localhost:9092' is used by containers inside network.\n      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092\n      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT\n      KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT\n      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1\n    healthcheck:\n      test: nc -z localhost 9092 || exit 1\n      interval: 3s\n      timeout: 10s\n      retries: 5\n      start_period: 10s\n```\n\n### Zookeeper\n\nFor more info - [check here](https://hub.docker.com/r/confluentinc/cp-zookeeper).\n\n```dockerfile\nversion: '2.3'\nservices:\n  zookeeper:\n    image: confluentinc/cp-zookeeper:6.1.4\n    restart: unless-stopped\n    environment:\n      ZOOKEPEER_LOG4J_ROOT_LOGLEVEL: WARN\n      ZOOKEPEER_LOG4J_TOOLS_ROOT_LOGLEVEL: WARN\n      ZOOKEEPER_CLIENT_PORT: 2181\n      ZOOKEEPER_TICK_TIME: 2000\n    healthcheck:\n      test: nc -z localhost 2181 || exit 1\n      interval: 3s\n      timeout: 10s\n      retries: 5\n      start_period: 10s\n```\n\n### Kafka Topics\n\nFor more info - [check here](https://hub.docker.com/r/landoop/kafka-topics-ui).\n\nDepends on [Kafka](#Kafka) and [Kafka REST](#Kafka REST) and [Schema Registry](#Schema Registry).\n\n```dockerfile\nversion: '2.3'\nservices:\n  kafka-topics:\n    image: landoop/kafka-topics-ui:0.9.4\n    restart: unless-stopped\n    ports:\n      - '8000:8000'\n    depends_on:\n      - kafka\n      - kafka-rest\n      - schema-registry\n    environment:\n      KAFKA_REST_PROXY_URL: kafka-rest:8083\n      PROXY: 'true'\n```\n\n### Kafka REST\n\nFor more info - [check here](https://hub.docker.com/r/confluentinc/cp-kafka-rest).\n\nDepends on [Kafka](#Kafka) and [Schema Registry](#Schema Registry).\n\n```dockerfile\nversion: '2.3'\nservices:\n  kafka-rest:\n    image: confluentinc/cp-kafka-rest:6.1.4\n    restart: unless-stopped\n    ports:\n      - '8083:8083'\n    depends_on:\n      - zookeeper\n      - schema-registry\n    environment:\n      KAFKA_REST_ROOT_LOGLEVEL: WARN\n      KAFKA_REST_LOG4J_TOOLS_ROOT_LOGLEVEL: WARN\n      KAFKA_REST_BOOTSTRAP_SERVERS: kafka:29092\n      KAFKA_REST_ZOOKEEPER_CONNECT: zookeeper:2181\n      KAFKA_REST_LISTENERS: http://kafka-rest:8083\n      KAFKA_REST_SCHEMA_REGISTRY_URL: http://schema-registry:8081\n      KAFKA_REST_HOST_NAME: kafka\n```\n\n### Schema Registry\n\nFor more info - [check here](https://hub.docker.com/r/confluentinc/cp-schema-registry).\n\nDepends on [Kafka](#Kafka).\n\n```dockerfile\nversion: '2.3'\nservices:\n  schema-registry:\n    image: confluentinc/cp-schema-registry:6.1.4\n    restart: unless-stopped\n    ports:\n      - '8081:8081'\n    depends_on:\n      kafka:\n        condition: service_healthy\n      zookeeper:\n        condition: service_healthy\n    environment:\n      SCHEMA_REGISTRY_LOG4J_ROOT_LOGLEVEL: WARN\n      SCHEMA_REGISTRY_LOG4J_TOOLS_ROOT_LOGLEVEL: WARN\n      SCHEMA_REGISTRY_KAFKASTORE_CONNECTION_URL: zookeeper:2181\n      SCHEMA_REGISTRY_HOST_NAME: schema-registry\n      SCHEMA_REGISTRY_LISTENERS: http://schema-registry:8081\n    healthcheck:\n      test: nc -z localhost 8081 || exit 1\n      interval: 3s\n      timeout: 10s\n      retries: 5\n      start_period: 10s\n```\n\n\n### KSQL\n\nKSQL is the streaming SQL engine for Apache Kafka. It provides an easy-to-use yet powerful interactive SQL interface \nfor stream processing on Kafka, without the need to write code in a programming language such as Java or Python.\n\nFor more info - [check here](https://hub.docker.com/r/confluentinc/cp-ksql-server).\n\nDepends on [Kafka](#Kafka) and [Schema Registry](#Schema Registry).\n\n```dockerfile\nversion: '2.3'\nservices:\n  ksql-server:\n    image: confluentinc/cp-ksql-server:5.4.6\n    restart: unless-stopped\n    ports:\n      - '8088:8088'\n    depends_on:\n      - kafka\n      - schema-registry\n    environment:\n      KSQL_LOG4J_ROOT_LOGLEVEL: WARN\n      KSQL_LOG4J_TOOLS_ROOT_LOGLEVEL: WARN\n      KSQL_BOOTSTRAP_SERVERS: kafka:29092\n      KSQL_LISTENERS: http://ksql-server:8088\n      KSQL_KSQL_SCHEMA_REGISTRY_URL: http://schema-registry:8081\n      KSQL_PRODUCER_INTERCEPTOR_CLASSES: io.confluent.monitoring.clients.interceptor.MonitoringProducerInterceptor\n      KSQL_CONSUMER_INTERCEPTOR_CLASSES: io.confluent.monitoring.clients.interceptor.MonitoringConsumerInterceptor\n```\n\n#### KSQL Client\n\nFor more info - [check here](https://hub.docker.com/r/confluentinc/cp-ksql-cli).\n\nDepends on [KSQL Server](#KSQL).\n\n```dockerfile\nversion: '2.3'\nservices:\n  ksql-cli:\n    image: confluentinc/cp-ksql-cli:5.4.6\n    restart: unless-stopped\n    depends_on:\n      - ksql-server\n    entrypoint: /bin/sh\n    tty: true\n```\n\n#### KSQL Control Center\n\nFor more info - [check here](https://hub.docker.com/r/confluentinc/cp-enterprise-control-center).\n\nDepends on [Kafka](#Kafka) and [KSQL Server](#KSQL).\n\n```dockerfile\nversion: '2.3'\nservices:\n  control-center:\n    image: confluentinc/cp-enterprise-control-center:6.1.4\n    restart: unless-stopped\n    ports:\n      - '9021:9021'\n    depends_on:\n      - kafka\n      - schema-registry\n      - ksql-server\n    environment:\n      CONTROL_CENTER_ROOT_LOGLEVEL: WARN\n      CONTROL_CENTER_LOG4J_TOOLS_ROOT_LOGLEVEL: WARN\n      CONTROL_CENTER_BOOTSTRAP_SERVERS: kafka:29092\n      CONTROL_CENTER_ZOOKEEPER_CONNECT: zookeeper:2181\n      CONTROL_CENTER_KSQL_URL: http://ksql-server:8088\n      CONTROL_CENTER_KSQL_ADVERTISED_URL: http://ksql-server:8088\n      CONTROL_CENTER_SCHEMA_REGISTRY_URL: http://schema-registry:8081\n      CONTROL_CENTER_REPLICATION_FACTOR: 1\n      CONTROL_CENTER_INTERNAL_TOPICS_PARTITIONS: 1\n      CONTROL_CENTER_MONITORING_INTERCEPTOR_TOPIC_PARTITIONS: 1\n      CONFLUENT_METRICS_TOPIC_REPLICATION: 1\n      PORT: 9021\n```\n\n\n## Message Brokers\n\n### NATS\n\nFor more info - [check here](https://docs.nats.io/nats-server/nats_docker).\n\n```dockerfile\nversion: '2.3'\nservices:\n  nats:\n    image: nats:2.7.2-alpine3.15\n    ports:\n      - '8222:8222'\n      - '4222:4222'\n    hostname: nats-server\n```\n\n\n\n## Big Data\n\n### Apache Nifi\n\nFor more info - [check here](https://hub.docker.com/r/apache/nifi).\n\n```dockerfile\nversion: '2.3'\nservices:\n  nifi:\n    image: apache/nifi:1.15.3\n    restart: unless-stopped\n    ports:\n      - '8090:8080'\n```\n\n\n## BPMN\n\n### Camunda\n\nFor more info - [check here](https://github.com/camunda/docker-camunda-bpm-platform).\n\n```dockerfile\nversion: '2.3'\nservices:\n  camunda:\n    image: camunda/camunda-bpm-platform:7.7.0\n    restart: unless-stopped\n    ports:\n      - '8086:8080'\n    environment:\n      DB_DRIVER: org.postgresql.Driver\n      DB_URL: jdbc:postgresql://postgres:5432/postgres\n      DB_USERNAME: postgres\n      DB_PASSWORD: postgres\n```\n\n\n## Infrastructure\n\n### Minio\n```dockerfile\nversion: '2.3'\nservices:\n  minio1:\n    image: minio/minio:RELEASE.2022-02-12T00-51-25Z\n    restart: unless-stopped\n    ports:\n      - '9001:9000'\n    volumes:\n      - /data1\n      - /data2\n    environment:\n      MINIO_ACCESS_KEY: minio\n      MINIO_SECRET_KEY: minio123\n    command: server http://minio{1...2}/data{1...2}\n    healthcheck:\n      test: ['CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live']\n      interval: 30s\n      timeout: 20s\n      retries: 3\n\n  minio2:\n    image: minio/minio:RELEASE.2022-02-12T00-51-25Z\n    restart: unless-stopped\n    ports:\n      - '9002:9000'\n    volumes:\n      - /data1\n      - /data2\n    environment:\n      MINIO_ACCESS_KEY: minio\n      MINIO_SECRET_KEY: minio123\n    command: server http://minio{1...2}/data{1...2}\n    healthcheck:\n      test: ['CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live']\n      interval: 30s\n      timeout: 20s\n      retries: 3\n```\n\n### Jaeger\n\nFor more info - [check here](https://www.jaegertracing.io/docs/1.8/getting-started/#all-in-one).\n\n```dockerfile\nversion: '2.3'\nservices:\n  jaeger:\n    image: jaegertracing/all-in-one\n    restart: unless-stopped\n    ports:\n      - '6831:6831/udp'\n      - '16686:16686'\n```\n\n### PACT Broker\n\nFor more info - [check here](https://hub.docker.com/r/dius/pact-broker).\n\nDepends on [Postgres](#Postgres).\n\n```dockerfile\nversion: '2.3'\nservices:\n  pact-broker:\n    image: dius/pact-broker:2.93.4.0\n    restart: unless-stopped\n    links:\n      - postgres\n    depends_on:\n      - postgres\n    ports:\n      - '10001:80'\n    environment:\n      PACT_BROKER_BASIC_AUTH_USERNAME: root\n      PACT_BROKER_BASIC_AUTH_PASSWORD: 1234\n      PACT_BROKER_BASIC_AUTH_READ_ONLY_USERNAME: 'true'\n      PACT_BROKER_BASIC_AUTH_READ_ONLY_PASSWORD: 'true'\n      PACT_BROKER_DATABASE_HOST: db\n      PACT_BROKER_DATABASE_NAME: postgres\n      PACT_BROKER_DATABASE_USERNAME: postgres\n      PACT_BROKER_DATABASE_PASSWORD: postgres\n      check_for_potential_duplicate_pacticipant_names: 'false'\n```\n\n### SonarQube\n\nFor more info - [check here](https://hub.docker.com/_/sonarqube).\n\n```dockerfile\nversion: '2.3'\nservices:\n  sonarqube:\n    image: sonarqube:8.9.7-community\n    restart: unless-stopped\n    ports:\n      - '9090:9000'\n```\n\n### Apache Atlas\n\nFor more info - [check here](https://github.com/ing-bank/rokku-dev-apache-atlas).\n\nDepends on [Kafka](#Kafka).\n\n```dockerfile\nversion: '2.3'\nservices:\n  atlas-server:\n    image: wbaa/rokku-dev-apache-atlas\n    restart: unless-stopped\n    ports:\n      - '21000:21000'\n    depends_on:\n      kafka:\n        condition: service_healthy\n```\n\n### GraphQL Apollo Federation\n\nFor more info - [check here](https://www.apollographql.com/docs/federation/) and [here](https://www.javatpoint.com/graphql-apollo-server-installation).\n\n```dockerfile\nversion: '2.3'\nservices:\n  apollo-federation:\n    image: xmorse/apollo-federation-gateway\n    restart: unless-stopped\n    ports:\n      - '8000:80'\n    environment:\n      CACHE_MAX_AGE: '5' # default cache\n      ENGINE_API_KEY: '...' # to connect to the apollo engine\n      POLL_INTERVAL: 30 # to update services changes\n      URL_0: \"http://host.docker.internal:8080/graphql\"   # For local service to access or can be external link\n      URL_1: \"http://host.docker.internal:8081/graphql\"   # For local service to access or can be external link\n      # You can add any amount of services URL_2, URL_3, etc\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoodforgod%2Fdocker-compose-ultimate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoodforgod%2Fdocker-compose-ultimate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoodforgod%2Fdocker-compose-ultimate/lists"}