Docker图像读取数据库属性

Docker图像读取数据库属性,docker,cloud,Docker,Cloud,我有一个java程序,它使用db.properties文件读取PostgreSQL数据库,我将其保存在C:\opt\xyz\projectname\db.properties下 创建了Docker映像,并能够使用-v选项在本地Docker容器上运行 例如:docker run-itd-v C:/opt/xyz/projectname:/opt/xyz/projectname项目名称:标记 我已将图像移动到谷歌云,并希望在云上运行图像 问:如何像我在windows上的C:\opt\xyz\proj

我有一个java程序,它使用db.properties文件读取PostgreSQL数据库,我将其保存在C:\opt\xyz\projectname\db.properties下

创建了Docker映像,并能够使用-v选项在本地Docker容器上运行

例如:docker run-itd-v C:/opt/xyz/projectname:/opt/xyz/projectname项目名称:标记

我已将图像移动到谷歌云,并希望在云上运行图像


问:如何像我在windows上的C:\opt\xyz\projectname\db.properties那样设置db.properties文件?

您无法在云运行时将卷装载到容器,但我不确定您是否需要它。我猜属性文件是只读的,因此您可以简单地将其包含在docker映像中

Dockerfile示例:

FROM openjdk:11
COPY target/app.jar /app/app.jar
COPY db.properties /app/db.properties
WORKDIR /app
ENTRYPOINT ["java", "-jar", "app.jar"]
db.properties文件将位于应用程序工作目录中:

try(InputStream in=newfileinputstream(“db.properties”)){
Properties prop=新属性();
道具荷载(in);
// ...
}

除了属性文件路径之外,我的代码与您提到的完全相同。属性文件具有要连接的用户ID/密码。您提到的Docker文件中可以包含吗?来自openjdk:8 WORKDIR/loadvalidation COPY./out/artifacts/loadvalidation\u jar/loadvalidation.jar/loadvalidation/loadvalidation.jar CMD[“java”、“-jar”、“/loadvalidation/loadvalidation.jar”]嗯,这取决于您的工作流程,我想这并不完美。可以考虑从环境变量读取属性,而不是读取文件。您可以在云运行控制台中设置它们。我不知道您是否使用springboot,但如果您使用,它会自动将环境变量映射到属性。我没有使用springboot。它只是一个本地java应用程序。