2016-08-20 8 views
1

私のプロジェクトごとに、いくつかのコンテナで構成されるドッカー開発環境を設定しました。私はしばしばプロジェクトを切り替える。そのためには、1組のコンテナを停止し、別のコンテナを開始する必要があり私は現在、このようにそれを行う:docker-composeでアプリケーションを起動および停止する便利な方法を探してください

$ cd project1 
$ docker-compose stop 
$ cd ../project2 
$ docker-compose up -d 

だから私は、現在実行しているアプリケーションを覚えておく必要がある、cdそのdocker-compose.ymlがあるディレクトリに、それを停止し、その後、そこに他のどのようなプロジェクト私が実行したい、cd覚えていると、始めよう。

良い方法がありますか?私が持っているマルチアプリケーションアプリケーションを覚えているユーティリティのように、現在実行中のアプリケーションを停止して、手動でcddocker-compose ingなしで別のアプリケーションを実行できますか?

(ちなみに、単一のアプリケーションの一部をホストするコンテナのセットのための正しい用語は何ですか?)

+0

Kubernetesは「ポッド」を使用して鯨のテーマに合っていますが、ポッドはコンテナのセットよりも少し具体的です。 ECSはそれらを「タスク」と呼びます。ドッカーは公用語、おそらく「構成」を持っていませんか? – Matt

+0

別の 'docker-compose up -d'を前のものを停止させずに実行すると、何が問題になりますか? –

+0

@MateuszMonetaホストシステム上の同じポートにマップすることができます(私の場合は常にそうです)。 – gvlasov

答えて

2

希望docker-compose-uiは、アプリケーションの管理に役立ちます。

+1

私は必要なもののように見えますが、私はこの回答を受け入れる前にそれをチェックする必要があります。 – gvlasov

0

あなたがルビーであることが実証されていれば、足場を使ってこれを行うことができます。

スレッドを使用して、ベアボーン例

require 'docker-compose' 

threads = [] 

project_paths = %w(/project/path1 /project/path2 /project/path3 /project/path) 

project_paths.each do |path| 
    threads.push Docker::Compose::Session.new(dir:compose_base_path1) 
end 

begin 
    threads.each do |thread| 
    thread.join 
    end 
rescue SystemExit, Interrupt 
    threads.each do |thread| 
    thread.kill 
    end 
rescue Exception => e 
    handle_exception e 
end 

source

  • docker-compose gem
  • を使用する(一つのプロセスなしに異なるドッカー-COMPOSEセッションを開始した後、一緒にそれらをすべて停止します)
  • スレッド

プロジェクトのフォルダにproject_pathsを設定するだけです。そして、それらをすべて終了させたい場合は、CTRL + Cを使用してください。

もちろん、デーモンを使って "名前"などを与えるいくつかの起動/停止を試みることはできますが、私は開始として推測します足場のためのポイントは、それは

1

enaugh私はここでの本当の問題は、このだと思うようになります。コンテナの1セットを停止し、別のを開始する必要が

別のプロジェクトを開始するためにあるプロジェクトを停止する必要はありません。

同じホストポートにマッピングする代わりに、私はポートを全くマッピングしません。次に、スクリプトを使用してコンテナのIPを検索し、直接接続します。

#!/bin/bash 
cip=$(docker inspect -f '{{range $key, $value := .NetworkSettings.Networks}} {{ $value.IPAddress}} {{end}}' $1) 

これでコンテナipが検索されます。これをコマンドと組み合わせてURLを開きます。

url=http://cip:8080/ 
xdg-open $url || open $url 

これを組み合わせると、ホストポートをマッピングせずにアプリケーションを実行できます。ホストポートが存在しない場合、他のプロジェクトを停止する必要はありません。

関連する問題