2つのメインJavaアプリが8つのpostgresデータベースを使用するアプリで構成されるプロジェクトがあるので、docker-composeで8つの異なるデータベースを構築して、それぞれが異なる所有者とパスワードを持つようにする方法はありますか? docker-composeでもできますか?
例:
services:
postgresql:
build: db/.
ports:
- "5432:5432"
environment:
- POSTGRES_DB=database1
- POSTGRES_USER=database1
- POSTGRES_PASSWORD=database1
すべての.sqlファイルをdocker-entrypoint-initdb.dに配置でき、postgresによって自動的に作成されることはわかっていますが、どの.sqlファイルをどのデータベースに入れるかを宣言するにはどうすればよいですか?
Tnx、トム
これによると、Github issue は、Dockerfileに渡す必要があるbashスクリプトを使用することで、複数のデータベースを実現できる可能性があります。
[〜#〜]編集[〜#〜]:
複数のデータベースを作成するには、次のスクリプトを使用できます。
https://github.com/mrts/docker-postgresql-multiple-databases
または
https://github.com/MartinKaburu/docker-postgresql-multiple-databases
上記のgit reposの1つを複製してボリュームとしてマウントする必要があることを示唆しています:/docker-entrypoint-initdb.d次に、次のコマンドを使用して複数のデータベース名を渡すことができます:POSTGRES_MULTIPLE_DATABASES変数
まあ-このGithubプロジェクトを見てみましょう: https://github.com/mrts/docker-postgresql-multiple-databases
公式のpostgres docker imageドキュメントによると:
このイメージから派生したイメージで追加の初期化を行う場合は、/ docker-entrypoint-initdb.dの下に1つ以上の* .sql、*。sql.gz、または* .shスクリプトを追加します(必要に応じてディレクトリを作成します) )。エントリポイントがinitdbを呼び出してデフォルトのpostgresユーザーとデータベースを作成すると、サービスを開始する前に、*。sqlファイルが実行され、そのディレクトリにある* .shスクリプトが読み込まれ、さらに初期化されます。
そのレポに使用できる準備されたスクリプトがあります。