version: "3.4"
services:
  # PostgreSQL is needed for both polylith and monolith modes.
  postgres:
    hostname: postgres
    image: postgres:11
    restart: always
    volumes:
      - ./postgres/create_db.sh:/docker-entrypoint-initdb.d/20-create_db.sh
    # To persist your PostgreSQL databases outside of the Docker image, to 
    # prevent data loss, you will need to add something like this:
    #  - ./path/to/persistent/storage:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: itsasecret
      POSTGRES_USER: dendrite
    networks:
      - internal

  # Zookeeper is only needed for polylith mode!
  zookeeper:
    hostname: zookeeper
    image: zookeeper
    networks:
      - internal

  # Kafka is only needed for polylith mode!
  kafka:
    container_name: dendrite_kafka
    hostname: kafka
    image: wurstmeister/kafka
    environment:
      KAFKA_ADVERTISED_HOST_NAME: "kafka"
      KAFKA_DELETE_TOPIC_ENABLE: "true"
      KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
    depends_on:
      - zookeeper
    networks:
      - internal

networks:
  internal:
    attachable: true