首页 > 解决方案 > 如何将 sslmode=require 传递给 liquibase

问题描述

我们在 Heroku 上运行应用程序并使用 Liquibase 更新数据库。现在看来我们必须将 'sslmode=require' URL 参数传递给 Liquibase。DB url 本身取自 Heroku 提供的 DATABASE_URL 环境变量,然后 Liquibase 属性由执行迁移的容器的 entrypoint.sh 脚本设置:

echo "使用 DATABASE_URL 进行配置";

IFS='/'

读取 -ra TOKENS <<< "$DATABASE_URL"

导出 LIQUIBASE_DATABASE=${TOKENS[3]}

IFS='@'

读取 -ra CRED_HOST_PORT <<< "${TOKENS[2]}"

IFS=':'

读取 -ra HOST_PORT <<< "${CRED_HOST_PORT[1]}"

导出 LIQUIBASE_HOST=${HOST_PORT[0]}

导出 LIQUIBASE_PORT=${HOST_PORT[1]}

读取 -ra USER_PW <<< "${CRED_HOST_PORT[0]}"

导出 LIQUIBASE_USERNAME=${USER_PW[0]}

导出 LIQUIBASE_PASSWORD=${USER_PW[1]}

那么,我们如何让 Liquibase 使用 sslmode=require 查询参数连接到 Heroku Postgres DB?

标签: dockerherokuliquibase

解决方案


必须在 entrypoint.sh 文件中配置环境变量 LIQUIBASE_URL:

  export LIQUIBASE_URL='jdbc:postgresql://'${LIQUIBASE_HOST}':'${LIQUIBASE_PORT}'/'${LIQUIBASE_DATABASE}'?sslmode=require'

推荐阅读