4

Passenger と Apache を使用して Rails アプリを提供するための完全な機能を備えたコンテナーがあり、コンテナー内に /var/www/app/public にルーティングする vhost があるとします。コンテナーはプロセスのようなものであると想定されているため、Rails コードが変更された場合はどうすればよいでしょうか? が Git で複製され、レポに保留中の変更がある場合、これらの変更appのコンテナをどのようにpull自動的に変更できますか?

4

3 に答える 3

0

docker v0.8では、稼働中のコンテナで新しいコマンドを起動できるようになるので、やりたいことができるようになります。

当面の解決策の 1 つは、ボリュームを使用することです。

オプション 1: Docker マネージド ボリューム

FROM ubuntu
...
VOLUME ["/var/www/app/public"]
ADD host/src/path /var/www/app/public
CMD start rails

コンテナーを起動して実行すると、git pull が必要になったときに、次のように簡単に実行できます。

$ docker ps # -> retrieve the id of the running container
$ docker run -volumes-from <container id> <your image with git installed> sh -c 'cd/var/www/app/public && git pull -u'

これにより、最初に実行中のコンテナーでソースが更新されます。

オプション 2: ホスト ボリューム

次の方法でコンテナを開始できます。

$ docker run -v `pwd`/srcs:/var/www/app/public <yourimage>

次にgit pull、ホストのソース ディレクトリで、コンテナーのソースを更新します。

于 2013-09-17T21:33:15.660 に答える
0

このシナリオでは、イメージをビルドし、このイメージをコンテナで実行しているように聞こえます。

実行中のコンテナーの元になったイメージを使用して、別のビルド ステップを追加して、最新のコードを git pull することができます。これは、既存のイメージに基づいた構築としての増分更新と見なします。(プライベート インデックスを使用していると仮定して) 適切にタグ付けしてプッシュすることをお勧めします。新しいイメージを実行できるようになります。

必要に応じて、ソフトウェアの基本イメージを再構築することもできます。Dockerfileを使用して、ソフトウェアの git チェックアウトを含む元のイメージを構築することを想定しています。その後、タグを付けてインデックスにプッシュし、適切に使用できます。

于 2013-09-15T11:07:15.717 に答える