我目前正在尝试使用我的应用和数据库容器之间的docker链接。我已经检查了我的应用容器,当我将容器链接在一起时,环境变量会自动设置。
我想要做的是将我的配置文件打包到jar文件中,以接收环境变量并为其设置所需的值。有什么建议或帮助吗?
这就是我在jar文件中创建配置文件以连接到MySQL的方法
database { url="jdbc:mysql://${MYSQL_PORT_3306_TCP_ADDR}:${MYSQL_PORT_3306_TCP_PORT}/mydb" driver="com.mysql.jdbc.Driver"}
答案 0 :(得分:2)
更新jar中的配置文件可能会非常过分。 它认为你有几个选择
编辑:添加了示例
您可以在docker image上保存这种启动器脚本,在启动实际程序之前动态创建配置。
#!/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
答案 1 :(得分:1)
我做的是我在我的目录/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来检查配置文件,我将能够看到环境集。