私がいることを予感していドッキングウィンドウが大幅に私のwebdevのワークフローを改善できるが-しかし、スタックにドッキングウィンドウを追加するプロジェクトにアプローチする方法を私はかなりの周り私の頭をラップするために管理していません。
基本的なソフトウェアスタックは次のようになります。
ソフトウェア
カスタムLAMPスタックを提供するDockerイメージ
- 複数のモジュールを持つApache
- MYSQL
- PHP
- 一部のCMS、たとえばSilverstripe
ギット
ワークフロー
ワークフローは次のようになると想像できます。
開発
Dockerfile
上記の要件を満たすLAMPコンテナを定義するを作成します- REQ:マシンは起動直後にapache / mysqlを開始するはずです
- Dockerイメージをビルドする
- CMSの実行に必要なファイルをegなどにコピーします。
~/dev/cmsdir
~/dev/cmsdir/
バージョン管理下に置く
- Dockerコンテナーを実行
~/dev/cmsdir
し/var/www/
て、コンテナーにマウントします - データベースに入力する
- で働く
/dev/cmsdir/
- Dockerコンテナーをコミットしてシャットダウンする
配備
- リモートホストを設定します(例:ansible)
- コンテナーイメージをリモートホストにプッシュする
cmsdir
gitを介したプロジェクトのフェッチ- Dockerコンテナーを実行し、データベースをプルしてマウント
cmsdir
します/var/www
さて、これは紙の上ではすべてとてもきれいに見えますが、これがまったく正しいアプローチであるかどうかはよくわかりません。
質問:
ローカルでの開発中に、コンテナインスタンスの再起動間でデータベースを保持するにはどうすればよいですか?または、コンテナーをスピンダウンする前に毎回sql-dumpを実行する必要がありますか?
dbとapacheサーバーに個別のコンテナインスタンスを用意する必要がありますか?それとも、上記のユースケースでは単一のコンテナがあれば十分でしょうか?
データベースとサーバーに別々のコンテナーを使用している場合、それらを同時に上下に自動化するにはどうすればよいですか?
実際にどのように
/dev/cmsdir/
コンテナーの/var/www/
ディレクトリにマウントしますか?これにはデータボリュームを使用する必要がありますか?私は落とし穴を逃しましたか?簡略化できるものはありますか?