Thr*_*ror 6 java properties docker
我当前正在创建一个使用 MongoDB 数据库的 Java 程序,并将连接信息存储在属性文件中。
但我的项目是 GitHub 上的开源项目,我无法将连接信息存储在属性文件中。
所以我想问你是否可以提供 docker run 的登录信息。
例子 :docker run registry/image -args db.password=psw db.username=user
我在stackoverflow中看到过解决方案,但所有解决方案都使用Spring功能,但我的项目不使用Spring框架。
对此我们有多种解决方案:
使用属性语法创建一个文件:
//secret-file.txt
db.password=psw
db.username=user
Run Code Online (Sandbox Code Playgroud)
使用此文件在您的 docker 中创建一个docker 密钥:
//secret-file.txt
db.password=psw
db.username=user
Run Code Online (Sandbox Code Playgroud)
并将其与java 程序中的java 库docker-secrets一起使用:
$ docker secret create test-secret secret-file.txt
Run Code Online (Sandbox Code Playgroud)
有关更多示例,请查看此处。
使用参数在 docker 中设置环境变量-e:
Map<String, String> secrets = DockerSecrets.loadFromFile("test-secret");
System.out.println(secrets.get("db.password")) // readonly
Run Code Online (Sandbox Code Playgroud)
System::getenv并在您的 java 程序中使用这些变量:
$ docker run -e DB_PASSWORD=pwd -e DB_USERNAME=user registry/image:tag
Run Code Online (Sandbox Code Playgroud)
此解决方案取决于用于创建 Docker 容器的基础映像。
将VM 参数提供给docker run命令:
System.out.println(System.getenv("DB_PASSWORD"))
Run Code Online (Sandbox Code Playgroud)
System::getProperty并在您的 java 程序中使用这些变量:
$ docker run -e JAVA_OPTS="-Ddb.password=pwd -Ddb.username=user" registry/image:tag
Run Code Online (Sandbox Code Playgroud)
为 docker run 命令提供参数:
声明图像后给出论据很重要。
System.out.println(System.getProperty("db.password"))
Run Code Online (Sandbox Code Playgroud)
并在 java 程序中将这些参数与main方法一起使用:
$ docker run registry/image:tag pwd user
Run Code Online (Sandbox Code Playgroud)
为了更好地处理参数,您可以使用 Apache 的commons-cli java 库或使用另一个库。
| 归档时间: |
|
| 查看次数: |
1119 次 |
| 最近记录: |