# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. version: "3.8" services: localstack: container_name: "${LOCALSTACK_DOCKER_NAME-localstack}" hostname: "${LOCALSTACK_DOCKER_NAME-localstack}" image: localstack/localstack:3.3.0 ports: - "4566:4566" # LocalStack Gateway - "4510-4559:4510-4559" # external services port range environment: - DOCKER_HOST=unix:///var/run/docker.sock volumes: - s3_data:/var/lib/localstack - /var/run/docker.sock:/var/run/docker.sock # use a static ip networks: afk_net: ipv4_address: 10.6.0.2 # create needed buckets aws-cli: container_name: "${AWS_CLI_DOCKER_NAME-aws-cli}" hostname: "${AWS_CLI_DOCKER_NAME-aws-cli}" image: amazon/aws-cli:2.15.37 environment: - AWS_ACCESS_KEY_ID=test - AWS_SECRET_ACCESS_KEY=test - AWS_DEFAULT_REGION=us-east-1 command: s3api create-bucket --bucket ko3 --endpoint=http://10.6.0.2:4566 depends_on: localstack: condition: service_healthy networks: - afk_net controller: container_name: "${CONTROLLER_DOCKER_NAME-controller}" hostname: "${CONTROLLER_DOCKER_NAME-controller}" stop_grace_period: 2m image: automqinc/automq:1.1.0-rc0 environment: - KAFKA_S3_ACCESS_KEY=test - KAFKA_S3_SECRET_KEY=test - KAFKA_HEAP_OPTS=-Xms1g -Xmx1g -XX:MetaspaceSize=96m command: - bash - -c - | /opt/automq/scripts/start.sh up --process.roles controller --node.id 0 --controller.quorum.voters 0@controller:9093 --s3.bucket ko3 --s3.endpoint http://10.6.0.2:4566 --s3.region us-east-1 networks: - afk_net depends_on: - localstack - aws-cli broker1: container_name: "${BROKER1_DOCKER_NAME-broker1}" hostname: "${BROKER1_DOCKER_NAME-broker1}" stop_grace_period: 2m image: automqinc/automq:1.1.0-rc0 ports: - "9094:9094" environment: - KAFKA_S3_ACCESS_KEY=test - KAFKA_S3_SECRET_KEY=test - KAFKA_HEAP_OPTS=-Xms1g -Xmx1g -XX:MetaspaceSize=96m -XX:MaxDirectMemorySize=1G - KAFKA_CFG_AUTOBALANCER_REPORTER_NETWORK_IN_CAPACITY=5120 - KAFKA_CFG_AUTOBALANCER_REPORTER_NETWORK_OUT_CAPACITY=5120 - KAFKA_CFG_AUTOBALANCER_REPORTER_METRICS_REPORTING_INTERVAL_MS=5000 # override listener settings - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,EXTERNAL://:9094 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://broker1:9092,EXTERNAL://localhost:9094 - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT command: - bash - -c - | /opt/automq/scripts/start.sh up --process.roles broker --node.id 1 --controller.quorum.voters 0@controller:9093 --s3.bucket ko3 --s3.endpoint http://10.6.0.2:4566 --s3.region us-east-1 networks: - afk_net depends_on: - localstack - aws-cli - controller broker2: container_name: "${BROKER2_DOCKER_NAME-broker2}" hostname: "${BROKER2_DOCKER_NAME-broker2}" stop_grace_period: 2m image: automqinc/automq:1.1.0-rc0 ports: - "9095:9095" environment: - KAFKA_S3_ACCESS_KEY=test - KAFKA_S3_SECRET_KEY=test - KAFKA_HEAP_OPTS=-Xms1g -Xmx1g -XX:MetaspaceSize=96m -XX:MaxDirectMemorySize=1G - KAFKA_CFG_AUTOBALANCER_REPORTER_NETWORK_IN_CAPACITY=5120 - KAFKA_CFG_AUTOBALANCER_REPORTER_NETWORK_OUT_CAPACITY=5120 - KAFKA_CFG_AUTOBALANCER_REPORTER_METRICS_REPORTING_INTERVAL_MS=5000 # override listener settings - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,EXTERNAL://:9095 - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://broker2:9092,EXTERNAL://localhost:9095 - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT,PLAINTEXT:PLAINTEXT command: - bash - -c - | /opt/automq/scripts/start.sh up --process.roles broker --node.id 2 --controller.quorum.voters 0@controller:9093 --s3.bucket ko3 --s3.endpoint http://10.6.0.2:4566 --s3.region us-east-1 networks: - afk_net depends_on: - localstack - aws-cli - controller volumes: s3_data: driver: local networks: afk_net: name: afk_net driver: bridge ipam: driver: default config: - subnet: "10.6.0.0/16" gateway: "10.6.0.1"