誰かがdocker-composeの次の動作について説明できますか(そしておそらく回避策を提供できます)?
次のファイルがあるとします。
Dockerfile
FROM Alpine:3.8
COPY ./entrypoint.sh /entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ]
entrypoint.sh
#!/bin/sh
until [ ! -z "$PLOP" ]; do
echo -n 'enter value here: '
read PLOP
done
echo "Good ... PLOP is $PLOP"
exit 1
docker-compose.yml
version: '3.7'
services:
plop:
tty: true
stdin_open: true
image: webofmars/plop:latest
出力は次のようになります。
1)./entrypoint.sh
docker-stdin> ./entrypoint.sh
enter value here:
CASE1
Good ... PLOP is CASE1
どうやら[〜#〜] ok [〜#〜]
2)docker-stdin> docker run -it webofmars/plop
enter value here: CASE2
Good ... PLOP is CASE2
どうやら[〜#〜] ok [〜#〜]
3)docker-stdin> docker-compose run plop
enter value here: CASE3
Good ... PLOP is CASE3
どうやら[〜#〜] ok [〜#〜]
4)docker-stdin> docker-compose up
Recreating docker-stdin_plop_1 ... done
Attaching to docker-stdin_plop_1 (last forever)
これはかなり奇妙に思えますNOT OK私のユースケースでは
私は何かを逃しましたか?
これは予想される動作です。 upはインタラクティブではありません。複数のコンテナを起動できるため、複数のコンテナ用にstdinを開いている単一のターミナルを持つことはできません。
しかし、docker-composeで実行できるオプションがあります。
別のウィンドウにアタッチし、docker-compose upで開始するときに、-dパラメーターを追加すると、そのdockerがバックグラウンドで開始されます。
docker-compose up -d
次に、そのDockerを接続して値を入力します
docker attach play_001_plop_1
単一行コマンド:
docker-compose up -d && docker attach play_001_plop_1