docker - 如何将 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?
解决方案
必须在 entrypoint.sh 文件中配置环境变量 LIQUIBASE_URL:
export LIQUIBASE_URL='jdbc:postgresql://'${LIQUIBASE_HOST}':'${LIQUIBASE_PORT}'/'${LIQUIBASE_DATABASE}'?sslmode=require'
推荐阅读
- mysql - 使用限制时mysql查询速度较慢
- python - 将 NumPy 数组条目映射到字典值
- r - 如何将具有负值和正值的列更改为具有负值加零和正值加零的两列
- java - Firebase 性能 - Crashlytics
- python - 如何在 Google Colab 中开始使用 spacy 库及其模块?
- java - 如何使用 POI 测试单元格是否符合 ConditionalFormattingRule 中定义的规则?
- apache-spark - 从多个键值对操作 Spark SQL 中 Map 结构内的键的单个值。对单个值应用 unbase64
- kubernetes - Node 在部署到 Kubernetes 集群时存在 Pod 不能容忍错误的污点
- swift - 使用正则表达式忽略模式
- javascript - 如果令牌过期则注销