docker组合和stdin上的用户输入



有人能解释(也许可以给出一个变通方法(docker compose的以下行为吗?

给定以下文件:

Dockerfile

FROM alpine:3.8
COPY ./entrypoint.sh /entrypoint.sh
ENTRYPOINT [ "/entrypoint.sh" ]

入口点.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

似乎正常

2(docker-stdin> docker run -it webofmars/plop

enter value here: CASE2
Good ... PLOP is CASE2

似乎正常

3(docker-stdin> docker-compose run plop

enter value here: CASE3
Good ... PLOP is CASE3

似乎正常

4(docker-stdin> docker-compose up

Recreating docker-stdin_plop_1 ... done
Attaching to docker-stdin_plop_1 (last forever)

这似乎很奇怪,并且对于我的用例来说不好

我错过什么了吗?

docker在stdin 上组成和用户输入

这是预期的行为。up不是交互式的。它可以启动多个集装箱,所以你不能有一个单一的码头stdin为多个容器打开。

但您可以使用docker compose进行选择。

附加在不同的窗口中,当您开始构建docker时,您可以添加-d参数,它将在后台启动该docker。

docker-compose up -d

然后只需附上docker并输入值

docker attach play_001_plop_1

单线命令:

docker-compose up -d && docker attach play_001_plop_1

相关内容

  • 没有找到相关文章

最新更新