在entrypoint.sh以外的文件中使用命令行参数的值

时间:2016-06-26 18:09:51

标签: tomcat docker system-properties

我的tomcat docker容器中有一个名为setenv.sh的文件。我在DOCKERFILE这样使用它:

COPY setenv.sh /tomcat/bin/setenv.sh

在这个文件中,我想使用一些命令行参数,当我启动这个docker容器时可以传递这些参数。例如,如果我像这样运行这个容器:

docker run -d --name somename -e FIRST_ARG=foo SECOND_ARG=bar

然后,在我的setenv.sh中,我想像这样使用它们:

export FIRST_ARG = <value of first_arg passed from command line>
export SECOND_ARG = <value of second_arg passed from command line>

问题

如何在docker run中使用带有-e标记的setenv.sh传递的参数?

2 个答案:

答案 0 :(得分:0)

您可以通过$FIRST_ARG

直接访问它们
#!/usr/bin/env sh

# To access first param end etc...
echo "My constant $FIRST_ARG"
echo "My constant $SECOND_ARG"

exec MY_GPOGRAM

无需再次export他们。环境变量将可用于该程序。

如果脚本中有特殊逻辑来生成新逻辑,那么执行以下操作:

# some logic
NEW_ENV_VARIABLE = "blablabla $FIRST_ARG"

exec NEW_ENV_VARIABLE=$NEW_ENV_VARIABLE MY_PROGRAM

答案 1 :(得分:0)

您可以像使用任何其他环境变量一样访问它们。也就是说,在你尝试使用它们之前,我会确保它们存在并指定一个合理的默认值,如果它们没有。

if [ -z "$ARG_1" ]; then
    export ARG_1=false
fi