2015-09-20 7 views
6

Dockerコンテナで実行されるコードの適切な開発ワークフローは何ですか?Docker開発ワークフロー

Solomon Hykes said "公式の"ワークフローには、各Gitコミットのための新しいDockerイメージの作成と実行が含まれていることが必要です。それは理にかなっていますが、Gitリポジトリにコミットする前に変更をテストしたいのですが?

は、私はそれを行うには、2つの方法を考えることができます。

  1. は、ローカルの開発サーバー(例えば、Djangoの開発サーバ)上でコードを実行します。ファイルを編集する。 devサーバ上でテストする。 Gitをコミットする。新しいコードでDockerイメージを再構築します。ローカルのDockerコンテナで再度テストしてください。

  2. ローカルのdevサーバーを実行しないでください。代わりに、ファイルを編集するたびに新しいDockerイメージを作成して実行し、ローカルDockerコンテナの変更をテストします。

どちらのアプローチもかなり非効率的です。より良い方法がありますか?

答えて

3

より効率的な方法は、最新のコードを持つ最新のイメージから新しいコンテナを実行することです。

あなたは、コンテナ内からファイルを編集することができますように、あなたはbashシェルを起動し、そのコンテナを開始することができます:

docker run -it <some image> bash -l 

あなたは、新しいコードをテストするために、そのコンテナ内のアプリケーションを実行します。

そのコンテナ内のファイルを変更するもう1つの方法は、ボリュームで起動することです。アイデアは、代わりに、容器自体からのコマンドラインからファイルをいじりのドッキングウィンドウのホスト上のディレクトリ内のファイルを変更することです:

docker run -it -v /home/joe/tmp:/data <some image> 

あなたのドッキングウィンドウのホスト上で/home/joe/tmpに置く任意のファイルは下で利用可能になります容器内の/data//dataをあなたのケースに適した任意のパスに変更し、ハックしてください。

+0

ありがとうございます! '-v'はよく見えます。しかし、 '/ home/joe/tmp'の変更がコミットされる準備が整った後はどうなりますか?コードをDockerイメージにコピーするためのエレガントな方法がありますので、再構築して展開できますか? –

+0

それをコミットし、イメージを再構築します。また、あなたのためにそれらのイメージを構築するためにJenkinsを使用することを検討する必要があります – Thomasleveil

+0

しかし、コードが私のローカルのdevマシンにある場合、それをDockerイメージに含めるにはどうすればよいですか? –

関連する問題