Инструменты пользователя

Инструменты сайта


how-to:mongodb

MongoDB

Docker

docker-compose.yaml

docker-compose.yaml

volumes:
  db: {}

services:
  mongo:
    image: mongo:${TAG-8.0}
    environment:
      MONGO_INITDB_ROOT_USERNAME: ${MONGO_INITDB_ROOT_USERNAME-mongoroot}
      MONGO_INITDB_ROOT_PASSWORD: ${MONGO_INITDB_ROOT_PASSWORD-superPass}
    ports:
      - mode: host
        protocol: tcp
        published: 27017
        target: 27017
    volumes:
      - db:/data/db
    restart: always
    networks:
      - db
    deploy:
      resources:
        limits:
          memory: ${MEMORY-128m}
          cpus: '1'
networks:
  db:
    attachable: true

docker-compose.me.yaml

docker-compose.me.yaml

services:
  mongo-express:
    image: mongo-express
    environment:
      ME_CONFIG_MONGODB_URL: mongodb://${MONGO_INITDB_ROOT_USERNAME-mongoroot}:${MONGO_INITDB_ROOT_PASSWORD-superPass}@mongo:27017
      ME_CONFIG_BASICAUTH: 'false'
    restart: always
    networks:
      - db
    deploy:
      resources:
        limits:
          memory: 100m
          cpus: '1'

docker-compose.me-traefik.yaml

docker-compose.me-traefik.yaml

services:
  mongo-express:
    networks:
      - traefik-public
    deploy:
      labels:
        - traefik.enable=true
        - traefik.docker.network=traefik-public
        - traefik.http.routers.mongo-express.entrypoints=http
        - traefik.http.routers.mongo-express.rule=Host(`${}`)
        - traefik.http.routers.mongo-express.service=mongo-express
        - traefik.http.services.mongo-express.loadbalancer.server.port=8081

networks:
  traefik-public:
    external: true

docker-compose.me-debug.yaml

docker-compose.me-debug.yaml

services:
  mongo-express:
    ports:
      - 8081:8081

docker README.md

docker README.md

# environment
- MONGO_INITDB_ROOT_USERNAME
- MONGO_INITDB_ROOT_PASSWORD

# create swarm
docker stack deploy --compose-file docker-compose.yaml mongodb
docker stack deploy --compose-file docker-compose.yaml --compose-file docker-compose.me.yaml --compose-file docker-compose.traefik.yaml mongodb

# remove swarm
docker stack rm mongodb
docker volume rm mongodb_db

# debug
docker compose -p mongodb -f docker-compose.yaml -f docker-compose.me.yaml -f docker-compose.me-debug.yaml up -d
docker compose -p mongodb down -v
docker run -d --rm -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=root -e MONGO_INITDB_ROOT_PASSWORD=root --name mongodb mongo:8.0
docker exec mongodb mongosh --host 127.0.0.1 -u root -p root --eval "db.adminCommand('listDatabases')"
docker run -d --rm -p 8081:8081 -e ME_CONFIG_MONGODB_URL='mongodb://root:root@${REDIS_HOST}:27017' --name mongo-express mongo-express
docker run -it --rm mongo mongosh --host ${REDIS_HOST} -u root -p root --authenticationDatabase admin test
docker stop mongo-express mongodb


https://hub.docker.com/_/mongo
https://hub.docker.com/_/mongo-express

Команды

Выполнение команд:

mongosh --eval ${COMMAND}

Показать список баз:

db.adminCommand('listDatabases')
db.getMongo().getDBNames().forEach(function(db){print(db)})

Удалить базу:

db.dropDatabase()

Добавить пользователя:

db.createUser({user:"username", pwd:"password", roles:[{role:"role", db:"database"}])
db.createUser({user:"root", pwd:"password", roles: [ "root" ]})

Backup / Restore

Резервная копия (база graylog):

docker exec mongo mongodump -d graylog --archive --gzip >graylog.gz

Восстановление:

zcat graylog.gz | docker exec -i mongo mongorestore --archive

https://docs.mongodb.com/manual/reference/program/mongodump/
https://docs.mongodb.com/manual/reference/program/mongorestore/

Ссылки

how-to/mongodb.txt · Последнее изменение: 127.0.0.1