@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, при запущенном контейнере?

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

Заранее спасибо за советы и рекомендации.
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 2
corw
@corw
Как вариант, повесьте что-то вроде такого на 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
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
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 60 000 до 200 000 руб.
8BIT GROUP Москва
от 150 000 до 200 000 руб.
МегаФон Екатеринбург
от 100 000 руб.