2017-03-19 12 views
0

私は、同じドッカー画像のセットを使用してAPIレスポンスを作成する2つの異なるWebプロジェクトを使用しています。開発者はGitHubからこれらのWebプロジェクトのいずれかを複製し、npmスクリプトを実行してローカル開発マシンでWeb層を開始することができます。この中Docker Dockerを使用してコンテナを作成するrun

レポ1 (コンテナ名はAPP_CONTAINERと言う)Web層のためのビルドスクリプトは、アプリ層のためのコンテナをスピンアップするために、スクリプトファイルを使用していますレポ。アプリケーション層のポートは9090(例)です。ウェブ層は8080上で動作します。このレポのドッカースクリプトは、実行中のアプリケーション(API)コンテナを確認し、削除し、内部ドッカーハブから最新の画像を取得し、それらのコンテナを再び開始します。この中

レポ2 は、Web層のためのビルドスクリプトは、アプリ(API)コンテナ(APP_CONTAINERと同じ名前を)引っ張ってドッキングウィンドウのコンを使用し、アップだレポ。これらのコンテナのポートは同じ9090ポートである必要があります。このレポのWebレイヤーは別のポート、つまりポート3000上で実行されます。

私の質問は、Repo 2でドッカーを作成するときに、既に作成され実行されている場合はコンテナAPP_CONTAINERを削除する方法ですドッカーの実行コマンドを使用して最初のレポで?

答えて

0

コンテナ名が常に同じ(または何かを判断できる)場合は、bashでこれを使用できます(またはスクリプトを呼び出す場所に統合することもできます)。

あなただけすでに実行されているコンテナを停止する場合:

docker stop $(docker ps -q -f name=APP_CONTAINER) 

すでに実行中のコンテナ

docker rm $(docker stop $(docker ps -q -f name=APP_CONTAINER)) 

を停止し、削除したい場合は一方で、既存のアプリのコンテナを削除する場合これが実行されていなくても、次のものを使用できます。

docker rm $(docker stop $(docker ps -qa -f name=APP_CONTAINER)) 

e docker-compose upの前にこのコマンドを実行すると、手動でコンテナを起動する代わりに実行するスクリプトを作成できます。

+0

これは、スクリプトを書くときに私が通常取る手順です。私は、開発者がドッカーを作成して実行するときにこれらが発生するようにします。私のドッカーがyml設定を使って何らかの形でそれらを行うことはできますか? –

+0

私が通常行うことは、開発者にとって必要なすべての操作を実行するルートにスクリプトを追加することです(場合によっては、データベースをインポートするなどの操作を行う必要があります)。 それ以外の場合は更新できません。 – oirad

関連する問題