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

标签 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>

问题

如何使用 setenv.sh 中的 -e 标志传递给 docker run 的参数?

最佳答案

您可以通过 $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

无需再次导出它们。环境变量将对程序可用。

如果你的脚本中有特殊的逻辑来生成新的逻辑,那么做这样的事情:

# some logic
NEW_ENV_VARIABLE = "blablabla $FIRST_ARG"

exec NEW_ENV_VARIABLE=$NEW_ENV_VARIABLE MY_PROGRAM

关于tomcat - 在 entrypoint.sh 以外的文件中使用命令行参数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38041593/

相关文章:

java - Java 系统属性的范围

tomcat - 如何在启动时在 Tomcat 配置中指定系统属性?

java - swagger jersey 2.5 Rest API 集成不起作用

java - 在 Tomcat 8 上部署

angular - Angular 4与Docker和Nginx

docker - Windows Server 2016 docker image 默认用户名/密码

java - Chef 对已部署应用程序的健全性检查

java - 在 Mac 上从 IntelliJ Ultimate Edition 启动 Tomcat 8.0.27 时无法看到 Tomcat 主页

docker - 使用 Ansible 复制 SSL 证书

java - Tomcat - 从命令行覆盖 catalina.properties