【发布时间】:2019-07-12 23:48:42
【问题描述】:
是否可以通过配置给 postgresql 测试容器一个自定义的 postgresql.conf 文件?
我已经包含了maven依赖
<dependency>
<groupId>org.testcontainers</groupId>
<artifactId>postgresql</artifactId>
<version>1.10.6</version>
</dependency>
并为 DB url 使用“通过 JDBC URL 方案启动的数据库容器” 因此,我的 Spring Boot 应用程序中的设置为:
datasource:
url: jdbc:tc:postgresql:10-alpine:///databasename
driver-class-name: org.testcontainers.jdbc.ContainerDatabaseDriver
我需要在 postgresql.conf 中进行自定义设置。 有没有办法将 postgresql.conf 推送到由 testcontainers 启动的 docker 容器?
编辑 1
感谢@vilkg,不过我确实知道 TC_INITSCRIPT 脚本选项和 SET 函数:
- 我想要一个自定义设置,例如 my.key
- ALTER 系统不适用于您自己的设置,例如:ALTER SYSTEM SET my.key = 'jehe';获取错误 无法执行 SQL 命令。 返回消息:`错误:无法识别的配置参数“my.key”
- 我之前尝试过如下 SET 和 ALTER DATABASE
SET my.key = 'new value 8'; -- sets for current session
ALTER DATABASE test SET my.key = 'new value 8'; -- sets for subsequent sessions
select current_setting('my.key');
问题是
- 当 testcontainer 启动 postgres 容器时,我将它传递给一个初始化脚本以运行
url: jdbc:tc:postgresql:10-alpine:///databasename?TC_INITSCRIPT=init_pg.sql- 我可以包含上面的 SQL 很高兴..
- 我知道该 secret.key 的设置在此脚本中工作正常,因为它会在 select current_setting('my.key'); 行失败。如果其他两个被注释掉了
- 我也知道对 db name test 运行它是正确的,例如:'ALTER DATABASE test' 因为如果我使用不同的名称,它会失败 Testcontainers 自动将应用程序连接到名为 test 的数据库 综上所述,我相信数据库设置得很好,一切都应该很好
但是 当我在应用程序代码中使用 'current_setting('my.key')' 时失败
【问题讨论】:
-
如果在设置配置值后从初始化脚本中执行
-
我已经尝试过了,但它似乎没有任何效果。我遇到了与上述相同的问题。
标签: postgresql maven spring-boot testcontainers