【发布时间】:2015-06-08 13:47:19
【问题描述】:
我正在使用 Docker 创建一个带有 SSL 的特定 nginx 容器。
但我不希望我的 SSL 文件按原样保存在我的版本控制系统中。因此它们是加密的。在构建 docker 容器时,我需要密码来解密文件并测试我的 nginx 配置。
我正在使用read 在我的安装脚本中获得提示,但 Docker 只是在提示时停止:
+ echo 'Please enter the password for the SSL certificates: '
+ read -s SSL_PASSWORD
INFO[0008] The command [/bin/sh -c /build/setup.sh && /build/cleanup.sh] returned a non-zero code: 1
在执行docker build 时有什么方法可以得到提示吗?
感谢您的帮助:)
【问题讨论】:
-
expect 等工具可能会有所帮助,请参阅expect.sourceforge.net
-
@user2915097 好吧,如果我对
expect的理解正确,它会保存您执行的操作并“重新播放”它们。但是,我不想将我的密码放入任何脚本中,否则加密将完全没用。 必须通过提示。 -
我的错,我说的对
autoexpect是正确的。但问题是我的docker build在虚拟机(boot2docker)中运行,所以我不知道我想要做的事情是否可能。 -
我认为您必须在运行时执行此操作,或者通过将由脚本处理的环境变量传递给执行一些初始化操作,或者将
docker exec传递到容器中并手动执行。我想你也可以手动完成,然后docker commit图像。 -
是的,有可能,boot2docker 或直接 Linux 没有区别,例如见 github.com/CannyComputing/Dockerfile-Ubuntu-Gnome/blob/master/… 或 hondou.homedns.org/pukiwiki/pukiwiki.php?Docker%20Glassfish