You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ktor项目中读取properties文件配置连接PostgreSQL

Ktor项目安全配置PostgreSQL数据库(避免凭证暴露)

我基于Ktor搭建了一个项目,需要配置PostgreSQL数据库连接,但希望绝对避免凭证暴露。目前找到的两种方案都不符合预期:

  1. 硬编码凭证,示例代码如下:
val database = Database.connect(
    url = "jdbc:h2:mem:test;DB_CLOSE_DELAY=-1",
    user = "root",
    driver = "org.h2.Driver",
    password = "",
)
  1. 直接依赖系统环境变量

我想采用更安全的方式:通过.properties文件加载配置,同时希望application.yaml能通过占位符引用环境变量,格式如下:

postgres:
    url: $POSTGRES_URL
    user: $POSTGRES_USER
    password: $POSTGRES_PASSWORD

虽然可以把凭证硬编码进配置文件再添加到.gitignore,但根据官方文档的建议,应该使用环境变量,所以认为这种方式并不合适。

已尝试的操作

  • 在项目根目录创建了development.properties和production.properties文件,内容如下:
POSTGRES_URL=
POSTGRES_USER=
POSTGRES_PASSWORD=
  • 在Databases.kt中尝试读取这些配置值,但所有获取结果都是null:
fun Application.configureDatabases() {
    val properties = Properties()
    val propertiesFile = File("development.properties")

    if (!propertiesFile.exists()) {
        throw FileNotFoundException("Postgres configuration file not found")
    }

    val url = properties.getProperty("POSTGRES_URL")
    val user = properties.getProperty("POSTGRES_USER")
    val password = properties.getProperty("POSTGRES_PASSWORD")

    println(url)
    println(user)
    println(password)

//    val database =
//        Database.connect(
//            url,
//            user = user,
//            driver = "org.h2.Driver",
//            password = password
//        )
}

内容的提问来源于stack exchange,提问作者ImEmo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 02:34:53