我有一个脚本或“控制台”,它通过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
似乎大于步骤中的步骤是打开此控制台并等待输入,我只是不确定如何正确发送它。我可以在没有此步骤的情况下构建容器并手动进行操作,这样它可以正常工作方式。
答案 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 .
如您所见,它不是交互式的,但至少它接受动态参数。