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