docker - 在构建期间将参数传递给通过 Dockerfile 运行的脚本
问题描述
我有一个脚本或“控制台”,它在我的 docker 构建期间通过我的 Dockerfile 启动。当它运行时,它运行良好并打开它的交互式提示。我的问题是,我似乎无法将命令传递到该交互式提示中。
这是我的 dockerfile 中重要的部分:
RUN ./iiq console
RUN import init.xml
RUN quit
我希望看到来自 init.xml 的依赖项被引入,但我得到了:
Step 24/26 : RUN ./iiq console
---> Running in d1bf75e69674
Setting iiq.hostname to d1bf75e69674-console
> Removing intermediate container d1bf75e69674
---> 3832361dee0e
Step 25/26 : RUN import init.xml
---> Running in 8a3cd63c7789
/bin/sh: import: command not found
步骤中的大于号是打开此控制台并等待输入,我只是不确定如何正确发送它。我可以在没有此步骤的情况下构建我的容器并手动完成,因此它可以这样工作。
解决方案
Docker 构建过程是完全非交互式的。
但我以不同的方式执行此操作,您可以在您的脚本中尝试此操作。
测试参数.sh
#!/bin/ash
echo "Arg is $1"
这是我的 Dockerfile
FROM alpine
copy testargs.sh /testargs.sh
RUN chmod +x /testargs.sh
ARG arg1
RUN ./testargs.sh $arg1
现在构建上面的 dockerfile。
docker build --no-cache --build-arg arg1=testingarg1 -t test .
如您所见,它不是交互式的,但至少它接受动态参数。
推荐阅读
- c++ - 如何在 C++ 应用程序中使用 WPF 作为 dll?
- android - firebase ml视觉检测面部,而flutter应用程序中的相机前没有面部
- c - 是否有任何 C 编译器能够检测到违反“严格符合程序”的情况?
- javascript - 如何根据两个属性对对象数组进行排序并检查愤怒是连续的?
- yaml - 有没有办法使用 yq 命令更改为 URL 中的 ip 地址
- javascript - Vanilla JS:如何检索 json 文件,将结果解析为数组,并访问每个对象
- javascript - 有没有办法从 javascript 函数中的模板调用 django 模型函数?
- javascript - Webix 如何实现隐藏文本控件来强制执行规则
- javascript - 如何设置开始日期和结束日期之间的验证应在 3 年内选择
- android - Flutter firebase 消息传递中的双重通知