2016-10-27 20 views
0

私は自分の開発環境をDockerに変更する段階にあり、これまでのところかなり満足していますが、基本的な質問が1つあります。しかし、まず私が着陸したセットアップの種類を説明しましょう。Dockerでデータストアを移植可能にする方法は?

私はWeb開発の環境の例を使用しています。
私は、MySQLのコンテナに協議し、ソースの(アプリと呼ばれる)のデータコンテナを持っているので、

  1. PHPを独自のコンテナ内のすべてのサービスを組織しています。
  2. nginxはPHPコンテナにリンクし、データコンテナ(app)からファイルを提供します。
  3. アプリは基本的にPHPと同じコンテナで(スペースを節約するため)、コンテナに自分のプロジェクトフォルダをマウントします。アプリケーションは、プロジェクトフォルダを他のコンテナに提供します。
  4. その後、mysqlのコンテナ
  5. に話し、最後にデータがDBのデータコンテナは、そこにあるデータ
  6. phpmyadminのコンテナと呼ばれる彼自身のデータコンテナを持っているMySQLのコンテナがあります。

すべての人にメリットがあるかどうかは分かりません。そのため、すべてのものを1つのコンテナに入れることができます。
私のホストマシンからDockerコンテナにプロジェクトフォルダをマウントすると、お気に入りのエディタを使用でき、私には継続的な開発ができます。
データベースエンジンをストアから切り離すと、エンジンを自由に変更できますが、データは保持できます。 (そして、あなたはエディタとDocker以外にプログラミングのものをインストールする必要はありません)

私の目標は、セットアップ全体を移植性の高いものにすることです。そのため、ホストシステム上にプロジェクトコードの最新バージョンコンテナ内に住んでいないことは大きなプラスです。私は上記のセットアップを私のプロジェクトフォルダの中にある `gotocker-compose.yml 'ファイルにまとめています。ですから、プロジェクトフォルダ全体を別のマシンにコピーして、「タイプしてください」と入力して起動してください。
私は実際にDropboxに持っていて、マシンを切り替えることができます。かなり甘い。

しかし、1つの欠点があります。 DBストアはVirtualboxファイルシステムのどこかにあるのでポータブルではありません。データストアをホストOSにマウントしようとしましたが、実際には動作しません。ファイルはありますが、読み書きしようとするとさまざまなエラーが発生します。

異なるdevマシン間でデータベースストアを同期(または可搬性)に保つことがベストプラクティスであれば、私の質問になると思います。

答えて

1

私はデータコンテナを改行し、名前付きボリュームに切り替えました。データコンテナは、そうでないことを示す古い文書があるにもかかわらず、しばらくは必要とされていません。

名前付きボリュームを使用すると、外部ソース(NFS、gluster、flockerなど)からデータをマウントできるさまざまなボリュームドライバから選択できます。また、ディスクのオーバーヘッドが大きくならないコンテナを選択する必要がなくなり、各コンテナの任意の場所にフォルダをマウントできるようになり、コンテナ管理とデータ管理が分離されます(docker rm -v $(docker ps -aq)ではデータが損なわれません) 。

名前付きボリュームは、ボリュームにdocker runの名前を付けるほど簡単に作成できます。 docker run -v app-data:/app myapp。そして、docker volume lsでそれらをリストすることができます。

+0

意味があります。しかし、 'docker-compose.yml'でどのようにボリュームを設定するのですか? 'version: '2' // volumes:// [volume_name]:[host_path] // services:// mysql:// volumes:// - data-db:/ var/lib/mysqlこのようなものが必要です。 '。それは可能ですか? – sebastian

+0

私はファンシーボリュームドライバを使用せず、自分のデータをホストにマウントしたいのであれば、別のドッカーボリュームを持たずにボリュームをホストにマウントするようにmysqlコンテナを指定しても構いませんか?再び、私の目標は、私のプロジェクトフォルダをUSBキーまたはDropboxに置くか、そこにスタック全体を置くことです。コード、docker-compose.yml、dockerfiles、dbデータストア。 – sebastian

+0

v2ファイルでボリュームを定義する方法の詳細については、[docker-compose.yml docs](https://docs.docker.com/compose/compose-file/#volume-configuration-reference)を参照してください。 – BMitch

関連する問題