Py学习  »  docker

Docker在stdin上组合和用户输入

webofmars • 4 年前 • 323 次点击  

有人能为Docker Compose的以下行为解释(并可能给出解决方法)吗?

给定以下文件:

文档文件

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)

这看起来很奇怪而且 不好 用于我的用例

我错过什么了吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/38617
 
323 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Edmhs
Reply   •   1 楼
Edmhs    5 年前

docker compose up and user inputs on stdin

这是预期的行为。向上不是交互式的。它可以开始 多个容器,因此不能有一个具有 打开多个容器的stdin。

但你也可以选择Docker Compose。

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

docker-compose up -d

然后附上那个码头工人,输入值

docker attach play_001_plop_1

单行命令:

docker-compose up -d && docker attach play_001_plop_1