【问题标题】:Passing environment variables through jar file which app uses通过应用程序使用的 jar 文件传递​​环境变量
【发布时间】:2015-01-26 04:12:22
【问题描述】:

我目前正在尝试我的应用程序和数据库容器之间的 docker 链接。我已经检查了我的应用程序容器,并且当我将容器链接在一起时会自动设置环境变量。

我要做的是让我的配置文件(打包成一个 jar 文件)接收环境变量并为其设置所需的值。有什么建议或帮助吗?

这就是我在 jar 文件中创建配置文件以连接到 MySQL 的方式

database { url="jdbc:mysql://${MYSQL_PORT_3306_TCP_ADDR}:${MYSQL_PORT_3306_TCP_PORT}/mydb" driver="com.mysql.jdbc.Driver"}

【问题讨论】:

  • 您能否提供一些环境变量的细节,我们在这里谈论。可能有一些sn-p。
  • 您是说要根据运行时环境更新映像中的文件吗?这似乎有点倒退,因为文件将在创建图像时创建。您可以将环境变量传递给您的 Java 进程
  • 我正在使用环境变量将我的 scala 应用程序连接到 MySQL db,如上图所示。环境变量将从数据库容器的 IP 地址和端口 3306 中设置端口地址。端口 3306 在我构建之前从 MySQL 映像中暴露出来。

标签: jar environment-variables docker config


【解决方案1】:

更新 jar 中的配置文件可能有点过头了。 它认为你有几个选择

  • 直接在你的程序中读取配置环境变量
    • 直接使用变量或在此处生成配置文件
  • 创建启动脚本(这个细节取决于你在docker中的guest os怎么做;sh/bash for linux etc..)
    • 该脚本可以从环境中生成新的配置文件,并将其放在 jar 之前的类路径中,以便您的程序看到它。

编辑:添加示例

您可以将这种启动器脚本保存在 docker 镜像上,它会在启动实际程序之前动态创建配置。

#!/bin/bash

# some default values for testing even without links to other container
MYSQL_PORT_3306_TCP_ADDR=${MYSQL_PORT_3306_TCP_ADDR:-127.0.0.1}
MYSQL_PORT_3306_TCP_PORT=${MYSQL_PORT_3306_TCP_PORT:-3306}

cat << EOF > /opt/yourprogram/dbconfig.conf
database { url="jdbc:mysql://${MYSQL_PORT_3306_TCP_ADDR}:${MYSQL_PORT_3306_TCP_PORT}/mydb" driver="com.mysql.jdbc.Driver"
}
EOF

scala -classpath /opt/yourprogram  YourProgram

【讨论】:

  • 您是否有任何示例 Linux 脚本可供我参考以用于第二个选项?我的剧本写得不太好。
  • 添加了简单的例子。我不知道你如何启动程序或文件名应该是什么,但也许你还是明白了。
【解决方案2】:

我所做的是在我的目录 /tmp/restcore-1.0-SNAPSHOT/bin 中编写了 sh 文件,如下所示:

  #!/bin/bash echo "database{url="jdbc:mysql://"${MYSQL_PORT_3306_TCP_ADDR}":"${MYSQL_PORT_3306_TCP_PORT}"/mydb" driver="com.mysql.jdbc.Driver" }" > myconf.conf

  jar uf /tmp/restcore-SNAPSHOT/lib/com.organization.restcore-1.0-SNAPSHOT.jar /tmp/restcore-1.0-SNAPSHOT/bin/myconf.conf

构建Dockerfile并在CMD中运行sh文件后,我使用cat myconf.conf查看配置文件,就可以看到环境设置了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2012-08-24
    相关资源
    最近更新 更多