2016-11-23 8 views
1

私は、nginx、php-fpm、およびmariadbで構成されるWebアプリケーションXYを持っています。私はドッキングマシンを使って自分のコンテナに至るまですべてを分割しました。それは魅力的なものです。開発目的のために、私はちょうど実際のソース/ PHPコードを含むローカルディレクトリをマウントしました。これをステージング環境または実稼働環境にデプロイするとき、Dockerのドキュメントはソースコードを実際のイメージに焼き付けるように指示しました。この場合、ソースコードをnginxにコピーするだけでなく、php-fpmイメージをビルドするときに、両方とも必要なのでコピーする必要があります。Dockerを使用してWebアプリケーションをコンテナ化する:複数のイメージにソースコードをコピーしますか?

アプリケーション自体が大きくなると(資産とライブラリが増えると)、nginxとphp-fpmの両方の画像が大きくなります。私の意見では、これは何とか「可能な限り小さな画像を維持する」ルールに違反し、これは私にとって非常に間違っているようです。私はいつも自分自身を繰り返したり、ロジックを1か所に保存したり、物事をエンコードしたりすることを学ばなかった。

これは正しい方法ですか、何か不足していますか?

+1

明らかなことは、2つの間でコードを共有するボリュームを作成することです。しかし、これは私にとっては解決策ではありません。私はすべてのものを持ち運びできるようにしたいからです。 :/ – kriskbx

+0

「できるだけ画像を小さくする」が良いです。しかし、PHPソースコードをイメージに焼き付けないと、どのようにイメージが完全に移植可能で、どのような環境でも設計どおりに実行できるようになるでしょうか? Docker Hub https://hub.docker.com/_/wordpress/のWordpress Dockerイメージについて考えてみましょう。 – Tuan

+0

WordPressのドッカー画像は、Webサーバー、インタプリタ、データベースなどの複数のプロセスを1つのコンテナで実行します。そこにソースコードを焼くことは問題ありません。 1つのコンテナで1つのプロセスだけを実行したいので、アプリケーション全体が複数のコンテナで構成されています。ソースを単一のイメージにコピーするのに問題はありませんが、何度もやり直さなければなりません。 nginxには実際のコードが必要です.phpには実際のコードが必要です。また、コードを必要とするワーカープロセスもあります。複数の画像でソース全体を焼くことはちょっと間違っているようですので、ここでベストプラクティスを尋ねました。 – kriskbx

答えて

1

Dockerise your PHP application with Nginx and PHP7-FPMに興味深い記事があります。この例では、ボリュームを使用してPHPとNginxの間でコードを共有しています。

自分自身を繰り返さないことについての悪い点は悪いことではありませんが、NginxのコンテナとPHPコンテナの数が常に同じであるとは限りません。おそらく、アプリケーションのPHP部分は、静的資産を提供する部分よりも負荷が大きくなり、独立して拡張する必要があるでしょう。 Docker Swarmのようなものを使用すると、PHPコンテナがすべて同じホスト上にあることが保証されていないことさえあります。

イメージはデプロイメントの成果物であり、複数のイメージに同じ静的コンテンツを焼き付けても問題はありません。

2

この場合、おそらくソースコードを含む新しいコンテナを作成します。このコンテナは、nginxとphp-fpmcanの両方がマウントできるボリューム内のソースコードのディレクトリをエクスポートできます。

関連する問題