我希望在将参数传递给shell入口点之前在运行时做最后一分钟的设置,为了实现这一点,我有以下几点。
ENTRYPOINT ./run_binary ${args}; /bin/sh -c
CMD ./run_binary
然而,通过这样做,似乎没有任何CMD
参数进入shell入口点。有没有解决的办法?我只是想在将控制权交还给shell入口点之前对二进制文件运行设置步骤(然后通过CMD
向USER发送。)
答案 0 :(得分:1)
当指定see the manual两者时,CMD成为要发送到ENTRYPOINT的参数列表,这样就不可能了
但你可以使用.sh脚本作为ENTRYPOINT,首先执行二进制命令,然后将收到的参数转发给shell
我还没有尝试过,但有些事情是
#!/bin/sh
./run_binary
/bin/sh -c "$@"
答案 1 :(得分:1)
您可以使用从原始Dockerfile触发ONBUILD
语句的中间构建映像,请参阅:https://docs.docker.com/engine/reference/builder/#/onbuild
ONBUILD指令向图像添加触发指令 当图像用作基础时,稍后执行 另一个构建。触发器将在上下文中执行 下游构建,好像它已经被插入后立即 FROM下游Dockerfile中的FROM指令。
如果要构建将用作图像的图像,这将非常有用 用于构建其他映像的基础,例如应用程序构建 可以使用特定于用户定制的环境或守护程序 配置。
关于CMD和ENTRYPOINT,请参阅:https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact
CMD
或ENTRYPOINT
中的一个
命令。ENTRYPOINT
可执行文件。CMD
应该用作定义默认参数的方法
ENTRYPOINT
命令或用于执行ad-hoc命令
容器CMD
参数。