【问题标题】:Dockerfile RUN read command give me errorDockerfile RUN 读取命令给我错误
【发布时间】:2017-11-22 19:18:39
【问题描述】:

同事们下午好,我正在与 Docker 合作构建一些镜像,我发现有些设施会询问用户密码等问题。

在创建图像的过程中可能会询问用户,然后将该仪表传递给另一个命令,例如此代码向我发送错误

FROM ubuntu:16.04
SHELL ["/bin/bash","-c"]
RUN ["echo","========== Enter root password for db =========="]
RUN ["/bin/bash","read","pass"]
RUN debconf-set-selections <<< "mysql-server mysql-server/root_password password $pass"
RUN debconf-set-selections <<< "mysql-server mysql-server/root_password_again password $pass"`

报错信息如下:

The command '/bin/bash read pass' returned to non-zero code: 127

然后构建过程失败,有什么建议这样做,在构建期间从用户那里读取?

【问题讨论】:

  • 为什么路径中有空格? /bin/bash
  • 抱歉没有空格,我刚刚编辑了我的代码(复制粘贴出错)

标签: mysql bash docker dockerfile


【解决方案1】:

docker build 在非交互模式下运行 - 这意味着它无法处理您的读取命令以在构建映像时从用户输入中接收密码。

我建议改用 build args docker 功能 - 请参阅此处https://docs.docker.com/engine/reference/builder/#arg 因此您可以在构建映像之前从用户那里读取 pass,然后通过 build arg 将其传递给构建过程,但请记住,使用 shell 命令和纯文本传递密码并不是很安全。

【讨论】:

  • 嗯,我明白了,我认为您可以在构建时直接从用户传递参数,而无需通过选项 --build-arg,谢谢您的回答我的朋友。
猜你喜欢
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
  • 2016-05-30
  • 2017-01-22
  • 2017-03-18
  • 1970-01-01
  • 2018-10-13
  • 1970-01-01
相关资源
最近更新 更多