繁体   English   中英

将固定参数添加到 docker 入口点中的命令 arguments

[英]Add fixed argument to command arguments in docker entrypoint

我想在 docker 入口点的命令中添加一个固定参数,该命令的执行方式如下:

command user_arg1 fixed_arg user_arg2

以 linux 终端为例,而不是运行:

echo arg1 arg2

我想跑:

<some set of commands> arg1 arg2

这样运行的最终命令是:

echo arg1 fixed_arg arg2

有没有办法使用基本的命令行工具来实现这一点,而不是编写 bash 脚本?

如果要在命令中间包含固定参数,则必须使用脚本。 但是,您不需要 bash 扩展,即使使用 BusyBox 或 Alpine ZEDC9F0A5A5D57797BF68E37364743831 中的基本 POSIX shell 也可以实现此目的。

#!/bin/sh
first="$1" # save the first option
shift      # remove it from the options list
           # now $@ is all the options except the first one
exec the_command "$first" some_arg "$@"

在 Docker 入口点的上下文中,它将通过整个CMD (或docker run命令部分或 Compose command: :)作为选项,因此您可以根据实际情况设置此命令。

#!/bin/sh
case "$1" in
  the_command)
    first="$2"
    shift 2
    exec the_command "$first" some_arg "$@"
    ;;
  *)
    exec "$@"
    ;;
esac

Docker 唯一能做的就是ENTRYPOINTCMD成一个命令 没有办法重新排列选项或以其他方式操纵它们。 我发现一个有用的模式是CMD是您要运行的实际命令,而ENTRYPOINT是最终运行它的脚本。 这可以随心所欲地操纵命令字符串,包括选择完全忽略它或更改运行的实际命令。

dockerfile 中的RUN命令应该可以工作,例如,

RUN /bin/bash -c 'source $HOME/.bashrc; \
echo $HOME'

docker 文档中的更多信息, https://docs.docker.com/engine/reference/builder/#run

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM