rustainers 0.15.1

A simple, opinionated way to run containers for tests.
Documentation
version: "3.9"

services:
  kafka:
    image: confluentinc/cp-kafka:7.2.4
    ports:
      - "9092:9092" #  TODO try to use an different host port
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,CONTROLLER:PLAINTEXT,EXTERNAL:PLAINTEXT
      KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9093,EXTERNAL://127.0.0.1:9092
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: true
      KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
      KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
      KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
      KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
      KAFKA_JMX_PORT: 9101
      KAFKA_JMX_HOSTNAME: 127.0.0.1
      KAFKA_PROCESS_ROLES: broker,controller
      KAFKA_NODE_ID: 1
      KAFKA_CONTROLLER_QUORUM_VOTERS: 1@kafka:29093
      KAFKA_LISTENERS: INTERNAL://kafka:9093,CONTROLLER://kafka:29093,EXTERNAL://0.0.0.0:9092
      KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
      KAFKA_CONTROLLER_LISTENER_NAMES: CONTROLLER
      KAFKA_LOG_DIRS: /tmp/kraft-combined-logs
    volumes:
      - ./kafka_update_run.sh:/tmp/update_run.sh
    command: 'bash -c ''if [ ! -f /tmp/update_run.sh ]; then echo "ERROR: Did you forget the update_run.sh file that came with this docker-compose.yml file?" && exit 1 ; else /tmp/update_run.sh && /etc/confluent/docker/run ; fi'''
    healthcheck:
      test: ["CMD", "nc", "-z", "127.0.0.1", "9092"]
      interval: 5s
      retries: 20
      start_period: 8s

  schema-registry:
    image: confluentinc/cp-schema-registry:7.2.4
    hostname: schema-registry
    depends_on:
      - kafka
    ports:
      - "8081"
    environment:
      SCHEMA_REGISTRY_HOST_NAME: schema-registry
      SCHEMA_REGISTRY_KAFKASTORE_BOOTSTRAP_SERVERS: kafka:9093
      SCHEMA_REGISTRY_LISTENERS: http://0.0.0.0:8081 #Devskim: ignore DS137138
    healthcheck:
      test: ["CMD", "curl", "--fail", "http://127.0.0.1:8081/subjects"] #Devskim: ignore DS137138
      interval: 1s
      retries: 20
      start_period: 8s