2017-01-23 11 views
0

これは完全なDocker初心者質問です。私はdockerを2回実行したいところから.shファイルを持っています。しかし、最初のドッカーの実行のみが実行されます。なぜですか?Docker - 同じ.shファイルから複数のdocker runコマンドを実行できません

mvn clean package docker:build -DskipTests 
docker run -e "SPRING_PROFILES_ACTIVE=profile1" -p 8080:8080 -ti something/myapp 
docker run -e "SPRING_PROFILES_ACTIVE=profile2" -p 8181:8181 -ti something/myapp 

答えて

3

理由は、あなたが-itとコンテナを実行していることです。これは、Dockerにコンテナのstdinに接続された擬似TTYを割り当てるよう指示し、コンテナ内に対話型bashシェルを作成します。したがって、最初のコンテナを実行すると、対話シェルは2番目のコンテナの実行をブロックします。

-itを、detachedモードでコンテナを実行する-dに置き換えるようにしてください。これを参照してくださいguide

docker run -e "SPRING_PROFILES_ACTIVE=profile1" -p 8080:8080 -d something/myapp 
docker run -e "SPRING_PROFILES_ACTIVE=profile2" -p 8181:8181 -d something/myapp 
0

デタッチモードでコンテナを実行するために-dを追加してみてください:

docker run -e "SPRING_PROFILES_ACTIVE=profile1" -p 8080:8080 -d -ti something/myapp 
docker run -e "SPRING_PROFILES_ACTIVE=profile2" -p 8181:8181 -d -ti something/myapp 
+0

afaik「-d」と「-it」スイッチの両方でコンテナを実行することはできません。 – gaetano

+1

もちろん、可能です。 – gile

+1

コンテナを実行するために使用されたルートプロセスが終了すると、コンテナは分離モードで終了しました。したがって、コンテナがcommand/bin/bashを実行するとすぐに停止します。シェルのような対話型プロセスの場合は、コンテナプロセスのttyを割り当てるために-i -tを一緒に使用する必要があります。 -i -tはしばしば-itと書かれます。 – gile

関連する問題