@vostotskiy

Как реализовать ежедневный бекап базы MongoDB, запущенной в docker контейнере?

Здравствуйте. В моем проэкте на стеке MEAN есть отдельно запускаемая в docker контейнере БД Mongo

Примерная настройка контейнера из docker-compose файла

mongodb:
    image: mongo
    ports:
      - "27017:27017"
    volumes:
          - ./db:/data/db
    networks:
      - mean-network


Есть команда, запускаемая непосредственно внутри запущенного докер-образа базы данных

mongodump --db dbName --out /data/db/backups/`date +"%m-%d-%y"`,


которая в внешний volume пишет бекап нужной базы в папку с именем текущей даты его создания

Как реализовать запуск этой команды на постоянной основе, как periodic task, при запущенном контейнере?

То есть, когда контейнер запущен, чтобы раз в день делался бекап базы в определенное время с созданием папки в указанном формате.

Заранее спасибо за советы и рекомендации.
  • Вопрос задан
  • 741 просмотр
Пригласить эксперта
Ответы на вопрос 3
Как вариант, повесьте что-то вроде такого на cron:
docker run --rm --link {{your-mongo-container-name}}:mongo \
  -v {{path_on_host & named volume}}:/data/db/backups/ \
  mongo bash -c ‘mongodump --out /data/db/backups/`date +"%m-%d-%y"` --host mongo:27017’

По сути вы создаете еще один инстанс монго и уже через него исполняете дамп. По завершении операции данный инстанс убьет сам себя.
Ответ написан
Комментировать
inf
@inf
DevOps Engineer
Делал похожее на ответ выше. По крону запускается `docker-compose up` который делает дампы. Главное тут в сеть нужную попасть, и к хосту нужному обратиться. Если без сертификатов, то всё просто.
networks:
  production_default:
    external: true

version: "3"
services:
  mongodump:
    image: mongo:4.0
    volumes:
    - ./mongodb/dump:/data/dump
    command: /bin/sh -c 'mongodump --quiet --host mongodb --archive=/data/dump/$$(date +"%Y-%m-%d").gz --gzip --db databasename_production'
    networks: 
      - production_default
Ответ написан
Комментировать
@trabl
docker exec -i container_name /usr/bin/mongodump --username username --password password --authenticationDatabase admin --db database_name --archive > /backup_directory/mongodb.dump в cron добавить, не?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы