eventstore 0.9.3

Official EventStoreDB gRPC client
Documentation
version: '3.5'

services:
  volumes-provisioner:
    image: "hasnat/volumes-provisioner"
    environment:
      PROVISION_DIRECTORIES: "1000:1000:0755:/tmp/certs"
    volumes:
      - "./certs:/tmp/certs"
    network_mode: "none"

  setup:
    image: eventstore/es-gencert-cli:1.0.2
    entrypoint: bash
    user: "1000:1000"
    command: >
      -c "mkdir -p ./certs && cd /certs
      && es-gencert-cli create-ca
      && es-gencert-cli create-node -out ./node1 --dns-names node1.eventstore
      && es-gencert-cli create-node -out ./node2 --dns-names node2.eventstore
      && es-gencert-cli create-node -out ./node3 --dns-names node3.eventstore
      && find . -type f -print0 | xargs -0 chmod 666"
    container_name: setup
    volumes:
      - ./certs:/certs
    depends_on:
      - volumes-provisioner

  node1.eventstore: &template
    image: eventstore/eventstore:20.6.1-buster-slim
    container_name: node1.eventstore
    env_file:
      - vars.env
    environment:
      - EVENTSTORE_EXT_HOST_ADVERTISE_AS=node1.eventstore
      - EVENTSTORE_INT_HOST_ADVERTISE_AS=node1.eventstore
      - EVENTSTORE_GOSSIP_SEED=node2.eventstore:2113,node3.eventstore:2113
      - EVENTSTORE_CERTIFICATE_FILE=/certs/node1/node.crt
      - EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE=/certs/node1/node.key
      - EVENTSTORE_ADVERTISE_HTTP_PORT_TO_CLIENT_AS=2111
      - EVENTSTORE_ADVERTISE_TCP_PORT_TO_CLIENT_AS=1111
    healthcheck:
      test:
        [
            'CMD-SHELL',
            'curl --fail --insecure https://node1.eventstore:2113/health/live || exit 1',
        ]
      interval: 5s
      timeout: 5s
      retries: 24
    ports:
      - 1111:1113
      - 2111:2113
    volumes:
      - ./certs:/certs
    depends_on:
      - setup
    restart: always

  node2.eventstore:
    <<: *template
    container_name: node2.eventstore
    environment:
      - EVENTSTORE_EXT_HOST_ADVERTISE_AS=node2.eventstore
      - EVENTSTORE_INT_HOST_ADVERTISE_AS=node2.eventstore
      - EVENTSTORE_GOSSIP_SEED=node1.eventstore:2113,node3.eventstore:2113
      - EVENTSTORE_CERTIFICATE_FILE=/certs/node2/node.crt
      - EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE=/certs/node2/node.key
      - EVENTSTORE_ADVERTISE_HTTP_PORT_TO_CLIENT_AS=2112
      - EVENTSTORE_ADVERTISE_TCP_PORT_TO_CLIENT_AS=1112
    healthcheck:
      test:
        [
            'CMD-SHELL',
            'curl --fail --insecure https://node2.eventstore:2113/health/live || exit 1',
        ]
      interval: 5s
      timeout: 5s
      retries: 24
    ports:
      - 1112:1113
      - 2112:2113

  node3.eventstore:
    <<: *template
    container_name: node3.eventstore
    environment:
      - EVENTSTORE_EXT_HOST_ADVERTISE_AS=node3.eventstore
      - EVENTSTORE_INT_HOST_ADVERTISE_AS=node3.eventstore
      - EVENTSTORE_GOSSIP_SEED=node1.eventstore:2113,node2.eventstore:2113
      - EVENTSTORE_CERTIFICATE_FILE=/certs/node3/node.crt
      - EVENTSTORE_CERTIFICATE_PRIVATE_KEY_FILE=/certs/node3/node.key
      - EVENTSTORE_ADVERTISE_HTTP_PORT_TO_CLIENT_AS=2113
      - EVENTSTORE_ADVERTISE_TCP_PORT_TO_CLIENT_AS=1113
    healthcheck:
      test:
        [
            'CMD-SHELL',
            'curl --fail --insecure https://node3.eventstore:2113/health/live || exit 1',
        ]
      interval: 5s
      timeout: 5s
      retries: 24
    ports:
      - 1113:1113
      - 2113:2113