MongoDB Docker Compose - haiquang9994/dev_env GitHub Wiki

keyfile

openssl rand -base64 756 > keyfile &&
chmod 0600 keyfile &&
chown 999:999 keyfile

docker-compose.yml

vim docker-compose.yml
services:
  mongodb:
    image: mongo:7.0
    container_name: mongodb
    restart: always
    ports:
      - "27017:27017"
    command: ["--quiet", "--replSet", "rs0", "--bind_ip_all", "--port", "27017", "--keyFile", "/etc/mongodb.key"]
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 1234
    healthcheck:
      test: echo "try { rs.status() } catch (err) { rs.initiate({_id:'rs0',members:[{_id:0,host:'localhost:27017'}]}) }" | mongosh -u root -p 1234 --port 27017 --quiet
      interval: 5s
      timeout: 30s
      start_period: 0s
      retries: 30
    volumes:
      - ./data:/data/db
      - ./keyfile:/etc/mongodb.key
docker compose up -d

connect from localhost

get server ip

ip -4 route get 1.1.1.1 | awk '{print $7}'

use mongodb compass, connect mongodb via ssh

cfg = rs.conf()
cfg.members[0].host = 'xxx.xxx.xxx.xxx:27017'
rs.reconfig(cfg)

or

rs.reconfig(cfg, { force: true })