私は自分の開発環境をDockerに変更する段階にあり、これまでのところかなり満足していますが、基本的な質問が1つあります。しかし、まず私が着陸したセットアップの種類を説明しましょう。Dockerでデータストアを移植可能にする方法は?
私はWeb開発の環境の例を使用しています。
私は、MySQLのコンテナに協議し、ソースの(アプリと呼ばれる)のデータコンテナを持っているので、
- PHPを独自のコンテナ内のすべてのサービスを組織しています。
- nginxはPHPコンテナにリンクし、データコンテナ(app)からファイルを提供します。
- アプリは基本的にPHPと同じコンテナで(スペースを節約するため)、コンテナに自分のプロジェクトフォルダをマウントします。アプリケーションは、プロジェクトフォルダを他のコンテナに提供します。
- その後、mysqlのコンテナ
- に話し、最後にデータがDBのデータコンテナは、そこにあるデータ
- phpmyadminのコンテナと呼ばれる彼自身のデータコンテナを持っているMySQLのコンテナがあります。
すべての人にメリットがあるかどうかは分かりません。そのため、すべてのものを1つのコンテナに入れることができます。
私のホストマシンからDockerコンテナにプロジェクトフォルダをマウントすると、お気に入りのエディタを使用でき、私には継続的な開発ができます。
データベースエンジンをストアから切り離すと、エンジンを自由に変更できますが、データは保持できます。 (そして、あなたはエディタとDocker以外にプログラミングのものをインストールする必要はありません)
私の目標は、セットアップ全体を移植性の高いものにすることです。そのため、ホストシステム上にプロジェクトコードの最新バージョンコンテナ内に住んでいないことは大きなプラスです。私は上記のセットアップを私のプロジェクトフォルダの中にある `gotocker-compose.yml 'ファイルにまとめています。ですから、プロジェクトフォルダ全体を別のマシンにコピーして、「タイプしてください」と入力して起動してください。
私は実際にDropboxに持っていて、マシンを切り替えることができます。かなり甘い。
しかし、1つの欠点があります。 DBストアはVirtualboxファイルシステムのどこかにあるのでポータブルではありません。データストアをホストOSにマウントしようとしましたが、実際には動作しません。ファイルはありますが、読み書きしようとするとさまざまなエラーが発生します。
異なるdevマシン間でデータベースストアを同期(または可搬性)に保つことがベストプラクティスであれば、私の質問になると思います。
意味があります。しかし、 'docker-compose.yml'でどのようにボリュームを設定するのですか? 'version: '2' // volumes:// [volume_name]:[host_path] // services:// mysql:// volumes:// - data-db:/ var/lib/mysqlこのようなものが必要です。 '。それは可能ですか? – sebastian
私はファンシーボリュームドライバを使用せず、自分のデータをホストにマウントしたいのであれば、別のドッカーボリュームを持たずにボリュームをホストにマウントするようにmysqlコンテナを指定しても構いませんか?再び、私の目標は、私のプロジェクトフォルダをUSBキーまたはDropboxに置くか、そこにスタック全体を置くことです。コード、docker-compose.yml、dockerfiles、dbデータストア。 – sebastian
v2ファイルでボリュームを定義する方法の詳細については、[docker-compose.yml docs](https://docs.docker.com/compose/compose-file/#volume-configuration-reference)を参照してください。 – BMitch