在构建期间将参数传递给通过Dockerfile运行的脚本

时间:2019-06-12 13:01:02

标签: docker dockerfile

我有一个脚本或“控制台”,它通过Dockerfile在我的Docker构建期间启动。运行此命令后,它将运行良好并打开其交互式提示。我的问题是,我似乎无法将命令传递到该交互式提示中。

这是我的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

似乎大于步骤中的步骤是打开此控制台并等待输入,我只是不确定如何正确发送它。我可以在没有此步骤的情况下构建容器并手动进行操作,这样它可以正常工作方式。

1 个答案:

答案 0 :(得分:1)

Docker构建过程是完全非交互的。

Interactive command in Dockerfile

但是我用不同的方式来做,您可以在脚本中尝试。

testargs.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 .

如您所见,它不是交互式的,但至少它接受动态参数。

enter image description here