99 lines
3.3 KiB
YAML
99 lines
3.3 KiB
YAML
version: "3"
|
|
|
|
services:
|
|
mongo1:
|
|
hostname: mongo1
|
|
container_name: mongo1
|
|
image: public.ecr.aws/docker/library/mongo:${MONGO_TAG}
|
|
environment:
|
|
MONGO_INITDB_DATABASE: mqtt
|
|
networks:
|
|
- emqx_bridge
|
|
expose:
|
|
- 27017
|
|
ports:
|
|
- 27011:27017
|
|
restart: always
|
|
volumes:
|
|
- ../../apps/emqx/etc/certs/cert.pem:/etc/certs/cert.pem
|
|
- ../../apps/emqx/etc/certs/key.pem:/etc/certs/key.pem
|
|
command:
|
|
- /bin/bash
|
|
- -c
|
|
- |
|
|
cat /etc/certs/key.pem /etc/certs/cert.pem > /etc/certs/mongodb.pem
|
|
mongod --ipv6 --bind_ip_all --tlsMode requireTLS --tlsCertificateKeyFile /etc/certs/mongodb.pem --replSet rs0
|
|
|
|
mongo2:
|
|
hostname: mongo2
|
|
container_name: mongo2
|
|
image: public.ecr.aws/docker/library/mongo:${MONGO_TAG}
|
|
environment:
|
|
MONGO_INITDB_DATABASE: mqtt
|
|
networks:
|
|
- emqx_bridge
|
|
expose:
|
|
- 27017
|
|
ports:
|
|
- 27012:27017
|
|
restart: always
|
|
volumes:
|
|
- ../../apps/emqx/etc/certs/cert.pem:/etc/certs/cert.pem
|
|
- ../../apps/emqx/etc/certs/key.pem:/etc/certs/key.pem
|
|
command:
|
|
- /bin/bash
|
|
- -c
|
|
- |
|
|
cat /etc/certs/key.pem /etc/certs/cert.pem > /etc/certs/mongodb.pem
|
|
mongod --ipv6 --bind_ip_all --tlsMode requireTLS --tlsCertificateKeyFile /etc/certs/mongodb.pem --replSet rs0
|
|
|
|
mongo3:
|
|
hostname: mongo3
|
|
container_name: mongo3
|
|
image: public.ecr.aws/docker/library/mongo:${MONGO_TAG}
|
|
environment:
|
|
MONGO_INITDB_DATABASE: mqtt
|
|
networks:
|
|
- emqx_bridge
|
|
expose:
|
|
- 27017
|
|
ports:
|
|
- 27013:27017
|
|
restart: always
|
|
volumes:
|
|
- ../../apps/emqx/etc/certs/cert.pem:/etc/certs/cert.pem
|
|
- ../../apps/emqx/etc/certs/key.pem:/etc/certs/key.pem
|
|
command:
|
|
- /bin/bash
|
|
- -c
|
|
- |
|
|
cat /etc/certs/key.pem /etc/certs/cert.pem > /etc/certs/mongodb.pem
|
|
mongod --ipv6 --bind_ip_all --tlsMode requireTLS --tlsCertificateKeyFile /etc/certs/mongodb.pem --replSet rs0
|
|
|
|
mongo_client:
|
|
image: public.ecr.aws/docker/library/mongo:${MONGO_TAG}
|
|
container_name: mongo_client
|
|
networks:
|
|
- emqx_bridge
|
|
depends_on:
|
|
- mongo1
|
|
- mongo2
|
|
- mongo3
|
|
volumes:
|
|
- ../../apps/emqx/etc/certs/cacert.pem:/etc/certs/cacert.pem
|
|
command:
|
|
- /bin/bash
|
|
- -c
|
|
- |
|
|
while ! mongo --host mongo1 --tls --tlsCAFile /etc/certs/cacert.pem --tlsAllowInvalidHostnames --eval 'db.runCommand("ping").ok' --quiet > /dev/null 2>&1; do
|
|
sleep 1
|
|
done
|
|
while ! mongo --host mongo2 --tls --tlsCAFile /etc/certs/cacert.pem --tlsAllowInvalidHostnames --eval 'db.runCommand("ping").ok' --quiet > /dev/null 2>&1; do
|
|
sleep 1
|
|
done
|
|
while ! mongo --host mongo3 --tls --tlsCAFile /etc/certs/cacert.pem --tlsAllowInvalidHostnames --eval 'db.runCommand("ping").ok' --quiet > /dev/null 2>&1; do
|
|
sleep 1
|
|
done
|
|
mongo --host mongo1 --tls --tlsCAFile /etc/certs/cacert.pem --tlsAllowInvalidHostnames --eval "rs.initiate( { _id : 'rs0', members: [ { _id : 0, host : 'mongo1:27017' }, { _id : 1, host : 'mongo2:27017' }, { _id : 2, host : 'mongo3:27017' } ] })" --quiet
|
|
mongo --host mongo1 --tls --tlsCAFile /etc/certs/cacert.pem --tlsAllowInvalidHostnames --eval "rs.status()" --quiet
|