version: '3.9' services: # setup MongoDB cluster for production mongo-replica-setup: container_name: mongo-setup image: 'mongo:latest' restart: on-failure networks: - computervision-network volumes: - ./.mongodb/conf/scripts/mongosetup.sh:/scripts/mongosetup.sh # entrypoint: ["bash"] entrypoint: ["bash", "/scripts/mongosetup.sh"] env_file: - .env environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} depends_on: - computervision-mongo1 - computervision-mongo2 - computervision-mongo3 computervision-mongo1: hostname: 'computervision-mongo1' container_name: 'computervision-mongo1' build: ./.mongodb restart: 'on-failure' command: ["-f", "/etc/mongod.conf", "--port", "30001", "--keyFile", "/auth/file.key", "--replSet", "${MONGO_REPLICA_SET_NAME}", "--bind_ip_all"] expose: - 30001 ports: - 30001:30001 networks: - computervision-network volumes: - mongoData1:/data/db - mongoLog1:/var/log/mongodb - ./.mongodb/conf/initdb.d/:/docker-entrypoint-initdb.d/ - ./.mongodb/conf/mongod.conf:/etc/mongod.conf healthcheck: test: echo 'rs.status().ok' | mongo admin --port 30001 -u $${MONGO_INITDB_ROOT_USERNAME} -p $${MONGO_INITDB_ROOT_PASSWORD} --quiet | grep 1 interval: 30s start_period: 60s env_file: - .env environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE} computervision-mongo2: hostname: 'computervision-mongo2' container_name: 'computervision-mongo2' build: ./.mongodb command: ["-f", "/etc/mongod.conf","--port", "30002", "--keyFile", "/auth/file.key", "--replSet", "${MONGO_REPLICA_SET_NAME}", "--bind_ip_all"] restart: 'on-failure' expose: - 30002 ports: - 30002:30002 networks: - computervision-network volumes: - mongoData2:/data/db - mongoLog2:/var/log/mongodb - ./.mongodb/conf/mongod.conf:/etc/mongod.conf env_file: - .env healthcheck: test: echo 'db.runCommand({serverStatus:1}).ok' | mongo admin -u $${MONGO_INITDB_ROOT_USERNAME} -p $${MONGO_INITDB_ROOT_PASSWORD} --quiet | grep 1 interval: 30s start_period: 60s environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE} depends_on: - computervision-mongo1 computervision-mongo3: hostname: 'computervision-mongo3' container_name: 'computervision-mongo3' build: ./.mongodb command: ["-f", "/etc/mongod.conf", "--port", "30003", "--keyFile", "/auth/file.key", "--replSet", "${MONGO_REPLICA_SET_NAME}", "--bind_ip_all"] restart: 'on-failure' expose: - 30003 ports: - 30003:30003 networks: - computervision-network volumes: - mongoData3:/data/db - mongoLog3:/var/log/mongodb - ./.mongodb/conf/mongod.conf:/etc/mongod.conf env_file: - .env healthcheck: test: echo 'db.runCommand({serverStatus:1}).ok' | mongo admin -u $${MONGO_INITDB_ROOT_USERNAME} -p $${MONGO_INITDB_ROOT_PASSWORD} --quiet | grep 1 interval: 30s start_period: 60s environment: MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME} MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD} MONGO_INITDB_DATABASE: ${MONGO_INITDB_DATABASE} depends_on: - computervision-mongo1 volumes: mongoData1: mongoData2: mongoData3: mongoLog1: mongoLog2: mongoLog3: networks: computervision-network: external: true