2017-05-30 9 views
0

WordPress開発用のネイティブDocker for Windows(Windows 10上)を使用しています。私は2つのコンテナを持っています:ワードプレスとMySQL。 MySQLコンテナには、実行間にDBデータが格納されるデータボリュームがあります。リブートの間にWindows 10上でMySQLコンテナを永続化する方法

「docker-compose up -d」でコンテナを開始し、「docker-compose down」で停止します。このように停止すると、MySQLデータはデータボリュームに正しく保存され、次回起動するとすべての変更が維持されます。

ただし、最初にMySQLコンテナを停止せずにWindows 10を再起動すると、前回の起動以降にデータベースに加えられた変更は保存されないようです。 Windows用のDockerは、再起動前に実行されていたものと同じボリュームを起動するのに十分スマートですが、DBデータを保存するように正しくシャットダウンすることは本当に気にしませんか?それは本当にそうですか、私は何かを誤解していますか?

システムの再起動時にデータを失わないようにする最も信頼性の高い方法は何ですか?再起動する前にすべてのMySQLコンテナを手動で停止するのは、特に複数のサーバが稼動しているときには面倒な作業です。おそらく、私は 'docker ps'の出力を解析し、再起動する前にすべてのMySQLコンテナを停止するスクリプトを作成することができますが、おそらく私はここでホイールを再開発しているのでしょうか?

状況に対処する最もよい方法は何ですか?私は高低を検索しましたが、トピックについては何も見つかりませんでした。私はこれを必要とする唯一の人ですか?ここに何もないのですか?

本当にありがとうございました!ありがとう!

P.S.私のドッキングウィンドウ-compose.ymlファイルは次のとおりです。

version: '2' 

services: 
    db: 
    image: mysql:5.7 
ports: 
    - "9013:3306" 
volumes: 
    - ./database:/var/lib/mysql 
restart: always 
environment: 
    MYSQL_ROOT_PASSWORD: somewordpress 
    MYSQL_DATABASE: wordpress 
    MYSQL_USER: wordpress 
    MYSQL_PASSWORD: wordpress 

    wordpress: 
depends_on: 
    - db 
image: wordpress:latest 
volumes: 
    - ./wordpress:/var/www/html 
ports: 
    - "8013:80" 
restart: always 
environment: 
    WORDPRESS_DB_HOST: db:3306 
    WORDPRESS_DB_USER: wordpress 
    WORDPRESS_DB_PASSWORD: wordpress 
    WORDPRESS_TABLE_PREFIX: wpd1_ 
+0

'docker-compose.yml'ファイルを表示できますか? ./database:/var/lib/mysql ' それは後にのみボリュームにデータを保存しているようだ - : ' ボリューム:janshair-カーン@ –

+0

は、私が使用しています何私の質問文 – Kirlat

答えて

0

私はいくつかの追加調査を行なったし、私は尋ねた問題を考えます約存在しなかった。それは実際にはWindows用のDocker問題(https://github.com/docker/for-win/issues/584)でした。

ここでは何が起こったのですか。 1.マシンを再起動すると、永続的なすべてのMySQLデータが実際に正しく保存されました。 2.コンピュータの再起動後、Dockerはコンテナが自動起動されてから数秒後にボリュームが使用可能になったため、ボリュームをマウントできませんでした(ここのコメントはhttps://github.com/docker/for-win/issues/584#issuecomment-286792858を参照してください)。この結果、MySQLデータベースは空になりました(ボリュームはマウントされず、データは読み取れません)。

コンテナを手動で再起動すると、すべての永続データが正しくロードされます。だから、私が考えていた問題ではなく、幸いにもそれほど深刻ではない別の問題でした。

私はこれを解決するために私を手伝ってくれてありがとう!

0

あなたのMySQLのデータのためのnamed volumeを使用することができます。あなたは右クリックドッカーアイコン(右下隅に)、マウントによりドッカー-エンジンからWindowsファイルシステムへのアクセスを有効にする必要があり

volumes: 
    - data-volume:/var/lib/db 

(それはデータだところMySQLの店舗先のあるべき)

+0

にすることを追加しました私は「ドッカー作曲家ダウン」します。しかし、Windowsの再起動時に、Docker for Windowsは「ドッキング・ダウン」する方法でコンテナをシャットダウンしないため、データが失われます。今は手動で行っていますが、マシンをリブートする前に忘れた場合に備えて、悪いことが起こります。それを避ける方法を探しています。 – Kirlat

0

共有Windowsドライブ。それはすでに完了だ場合は、ドライブへの完全なパスを提供する必要があるかもしれません。またに./すなわち変更を削除してみてくださいすなわち

volumes: 
    - c:\data:/var/lib/db 

volumes: 
    - wordpress:/var/www/html 
+0

'wordpress:/ var/www/html'を指定しても動作しないようです。 docker-compose.ymlファイルを持つディレクトリ内のサブフォルダであれば './wordpress:/ var/www/html'でなければなりません。 この問題は、https://github.com/docker/for-win/issues/584に関連していますが、私は当初のものではありませんでした(上記の私の答えを参照してください)。 これを解決するお手伝いをありがとう! – Kirlat

関連する問題