【发布时间】:2019-02-22 09:07:29
【问题描述】:
努力让 docker 应用同时通过管道输出到文件并读取输入。在 bash 中运行相同的命令可以正常工作。
该命令是我创建的一个名为 envwarden 的 CLI(一个简单的 bash 脚本环绕 Bitwarden CLI)。
最简单的例子:
本地
在本地运行它(不是在 docker 内部),它按预期工作:
$ ./envwarden --dotenv >/tmp/secrets.txt
.envwarden file not found in /home/user ... prompting for credentials
? Email address: my@email.addr
? Master password: [hidden]
提示工作正常。我可以输入我的电子邮件(显示)、密码(隐藏),然后输出到/tmp/secrets.txt 就好了。
与码头工人
使用 docker,事情的表现会有所不同。
使用docker run -ti(或只是docker run -t),根本不会提示输入电子邮件或密码...
$ docker run --rm -ti envwarden/envwarden envwarden --dotenv >/tmp/secrets.txt
# ... no output ...
docker run -i 会显示提示,但我输入的任何内容都会重复,并且还会显示密码! :-/
$ docker run --rm -i envwarden/envwarden envwarden --dotenv >/tmp/secrets.txt
.envwarden file not found in /root ... prompting for credentials
? Email address: my@email.address
? Email address: my@email.address
? Master password: [input is hidden] my password
? Master password: [hidden]
docker run,没有-t或-i会显示提示,但无法获取输入
$ docker run --rm envwarden/envwarden envwarden --dotenv >/tmp/secrets.txt
.envwarden file not found in /root ... prompting for credentials
? Email address: unable to login or sync with bitwarden.
更多详情
这是Dockerfile 和docker-entrypoint.sh
问题
如何让 docker 匹配与本地运行相同的行为?即提示输入密码而不显示它,并将输出重定向到标准输出。
【问题讨论】:
-
docker-entrypoint.sh中有什么内容? -
docker-entrypoint.sh (抱歉,忘记链接它,它都是回购的一部分。编辑我的问题以包含它)