LoginSignup
3

More than 5 years have passed since last update.

Dockerで起動しているMongoDBにリストアする

Last updated at Posted at 2018-03-14
docker run --rm --link mongo_mongodb_1:mongo -v /var/www/mongo/backup/:/backup --network mongo_default mongo:3.2 bash -c 'mongorestore --db ${DATABASE_NAME} --host mongo /backup'

オプションの説明

--rm

--rm

今回走らせるdockerコンテナがexitしたときに、コンテナを削除する

--link

--link mongo_mongodb_1:mongo

(container_name:ALIAS)
起動中のコンテナmongo_mongodb_1にmongoとして接続できるようにしている

docker psしたときに表示されるNAMESを指定している

$ docker ps
CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS                          PORTS                                      NAMES
79412c85455e        mongo-express                            "tini -- node app"       19 hours ago        Up 19 hours                     8081/tcp                                   mongo_mongo-express_1
d2381e8d539c        jrcs/letsencrypt-nginx-proxy-companion   "/bin/bash /app/entr…"   19 hours ago        Up 19 hours                                                                letsencrypt-nginx
ecf74e818b8e        jwilder/nginx-proxy                      "/app/docker-entrypo…"   19 hours ago        Up 19 hours                     0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx-proxy
88085298f1e5        mongo:3.2                                "docker-entrypoint.s…"   41 hours ago        Up 19 hours                     0.0.0.0:27017->27017/tcp                   mongo_mongodb_1

-v

-v /var/www/mongo/backup/:/backup

今回走らせるdockerコンテナ内の/backupにホストの/var/www/mongo/backup/をマウントしている

backupディレクトリの中身は、以下のようになっている

$ ls -l backup/
合計 203496
-rw-r--r-- 1 admin admin     17545  3月 14 10:44 admin-sessions.bson
-rw-r--r-- 1 admin admin       200  3月 14 10:44 admin-sessions.metadata.json
-rw-r--r-- 1 admin admin     12507  3月 14 10:44 authors.bson
.
.
.
-rw-r--r-- 1 admin admin        92  3月 14 10:47 userinfos.metadata.json
-rw-r--r-- 1 admin admin     29198  3月 14 10:47 users.bson
-rw-r--r-- 1 admin admin        88  3月 14 10:47 users.metadata.json

--network

--network mongo_default

もし、mongoが別ネットワーク上で起動している場合は、このオプションで、mongoが起動しているネットワークに接続する

実行コマンド

bash -c 'mongorestore --db ${DATABASE_NAME} --host mongo /backup'

--linkで接続したmongoに、--host mongoで接続して、
${DATABASE_NAME}にリストアしている

確認

バックアップデータをDocker内のMongoDBにリストアできたか確認します。

まずは、MongoDBコンテナ内に入る

$ docker exec -it mongo_mongodb_1 bash
root@88085298f1e5:

mongoシェルに入って、データベースがあるか確認

root@88085298f1e5:/# mongo
MongoDB shell version: 3.2.19
connecting to: test

> show dbs      # データベース一覧を表示する
${DATABASE_NAME}    0.195GB
local               0.000GB

無事、リストアできていることが確認できました。

あとは、実行コマンドをinit.shのようなシェルスクリプトにしてしまえば、開発環境の構築がラクになりそうですね!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3