jar - 通过应用使用的jar文件传递环境变量

标签 jar environment-variables docker config

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

我要做的是将我的配置文件打包到jar文件中,以接收环境变量并为其设置所需的值。有什么建议或帮助吗?

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

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

最佳答案

更新jar内的配置文件可能会过大。
它认为您有几种选择

  • 直接在程序中读取config环境变量
  • 直接使用变量或在其中生成配置文件
  • 创建启动脚本(详细信息取决于您在docker中的 guest 操作系统如何执行;针对Linux等的sh / bash等。)
  • 该脚本可以从环境生成新的配置文件,并将其放在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
    

    关于jar - 通过应用使用的jar文件传递环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28144710/

    相关文章:

    java - 如何将-t参数传递给fabric8 docker-maven-plugin?

    java - Gradle-以jar形式共享项目依赖

    java - NetBeans 在导入的 jdde Pretty-tools jar 文件中找不到类

    java - Android 项目中 getResourceAsStream 的路径

    docker - 有没有办法在 docker swarm 模式下停止、启动单个任务?

    mysql - 设置 Docker MySql 数据库并将其连接到 BE

    java - 如何引用位于单独库 jar 文件中的 OpenGL 着色器文件?

    typescript - 如何在 NestJS 中设置类似 Angular 的配置环境文件?

    node.js - 如何获取 Loopback 3 条件 'datasources' 和 'model-config' : following instructions and doesn't work

    firebase - 如何使用 Angular 8/9 隐藏 API key ?