構成を介してpostgresql testcontainerにカスタム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 にカスタム設定が必要です。testcontainers によって開始された docker コンテナーに postgresql.conf をプッシュする方法はありますか?
編集1
@vilkg に感謝しますが、TC_INITSCRIPT スクリプト オプションと SET 関数については知っていました。
- my.key などのカスタム設定が必要です
- ALTER システムは、独自の設定では機能しません。例: ALTER SYSTEM SET my.key = 'jehe'; get error 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 コンテナーを開始し、init スクリプトを渡して実行するとき
url: jdbc:tc:postgresql:10-alpine:///databasename?TC_INITSCRIPT=init_pg.sql
- 上記のSQLを含めることができます..
- select current_setting('my.key'); の行で失敗するため、このスクリプトで secret.key の設定が正しく機能していることはわかっています。他の2つがコメントアウトされている場合
- また、データベース名テストに対して実行することは正しいことも知っています。たとえば、「ALTER DATABASE テスト」は、別の名前を使用すると失敗するためです。Testcontainers は、アプリをテストという名前のデータベースに自動的に接続します。上記のすべてで、DB が適切にセットアップされていると思いますそして、すべてが良いはずです
しかし、アプリケーションコード内で 'current_setting('my.key')' を使用すると失敗します