web-dev-qa-db-ja.com

dockerとdocker-composeの複数のデータベース

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、トム

10

これによると、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変数

5
Sergiu

まあ-この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スクリプトが読み込まれ、さらに初期化されます。

そのレポに使用できる準備されたスクリプトがあります。

5
Przemek Nowak