[英]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 唯一能做的就是將ENTRYPOINT
和CMD
成一個命令; 沒有辦法重新排列選項或以其他方式操縱它們。 我發現一個有用的模式是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.