2016-10-07 21 views
4

私がやりたいことは、本番環境のサーバから取り出したdump.rdbを使用して、開発環境で使用することです。ファイル。簡単にするためにdump.rdbからdocker上で実行されているredisを復元する

、私のアプリはRedisのとフラスコのため、このcompose example from the docker docsと同じであると仮定し、そのようにドッキングウィンドウ-compose.ymlに見えます:

version: '2' 
services: 
    web: 
    build: . 
    ports: 
     - "5000:5000" 
    volumes: 
     - .:/code 
    depends_on: 
     - redis 
    redis: 
    image: redis 

これは、再起動間のRedisのデータを持続し、あなただけではないことができますdocker-compose.ymlにredisのためのボリュームがマウントされていないので、redisファイルにアクセスします。 私はcomposeファイルを変更してredisのボリュームをマウントします。また、redisにデータを永続させたいのですが、official redis image docsは 'appendonly'を使用すると起こると言います。

redis: 
    image: redis 
    command: redis-server --appendonly yes 
    volumes: 
    - ./redis:/data 

私はこれを行う場合、私のデータは、彼らが元の例にあったように、保持され、そして私は今/ Redisのパスにdump.rdbとし、appendonly.aofを見ることができます。問題は、私がdump.rdbから復元したい場合、私はappendonlyをオフにする必要があるということです(例えば、デジタル海洋のhow-to-back-up-and-restore-your-redis-data-on-ubuntu-14 -04)、追加なしでは、作成ファイルをボリュームに書き込む方法がわかりません。

dump.rdbファイルを切り替えて、本番環境のスナップショットを自分の開発環境に挿入できるボリュームに、redisを持続させるドッカー作成をどのようにすることができますか?

更新 次コン作品、しかしdump.rdbの作成はインスタントではないとして、テスト、(それが失敗したように、したがって、それは見せかけの)患者です。また、Redisの公式画像ドキュメントは、あなたがいないときappendonly使用する必要があります意味:

redis: 
    image: redis 
    volumes: 
    - ./redis:/data 

答えて

1

appendonly部分はちょうどあなたがデータを失うことはありませんが、あなたはすでにダンプを持っているのでことを確認することです。あなたがそれを心配する必要はありません:append onlyフラグを削除するか、 'コマンド'を完全に削除することができます。これは、イメージのデフォルトである 'redis-server'に戻ります。

私は同様のセットアップhereを持っており、dump.rdbファイルを書き込み/ロードするのは問題ありません。

+0

おかげさまで@Chris - 作成ファイルを比較すると、一つの違いは、あなた自身のredisイメージ 'build redis'(c.f.' image redis')を構築していることです。私はあなたのredis Dockerfileを使ってそれがあったかどうかを見てみましたが、私はまだ期待どおりの結果を得ていませんでした。したがって私は標準的なイメージに戻って、「コマンド」を削除してボリュームを持っていました。それは時間の一部を修正するようだ - 時々私はコンテナを再起動する必要があります。私は問題は、 'dump.rdb'ファイルの作成がトリガされていないことですが、コンテナをシャットダウンするとトリガされるということです。 –

関連する問題