簡體   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