8

構成を介して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')' を使用すると失敗します

4

2 に答える 2