Docker が PostgreSQL を起動するときに複数のデータベースを作成するためのソリューション

Docker が PostgreSQL を起動するときに複数のデータベースを作成するためのソリューション

1 はじめに

「DockerでPostgreSQLを起動する方法といくつかの接続ツールのおすすめ」の記事で、 Docker経由でPostgreSQL起動する方法を紹介しましたが、データベースは1つしかありません。同じDockerコンテナ上に複数のデータベースを作成したい場合はどうすればよいでしょうか。

2 2つの解決策

1 つの解決策は、 shell/sqlスクリプトを/docker-entrypoint-initdb.d/ディレクトリに配置し、コンテナーの起動時に自動的に作成することです。もう 1 つの解決策は、 shellスクリプトを使用して作成を指定することですが、基本的には同じです。ここで紹介するのは最初のものだけです。

shellスクリプトまたはsqlスクリプトを指定されたディレクトリに配置すると、自動的に実行されます。どちらのスクリプトでもかまいません。

以下はshellスクリプトの例です。

#!/bin/bash

セット-e
セット-u

関数create_user_and_database() {
	ローカルデータベース=$1
	echo " ユーザーとデータベース '$database' を作成しています"
	psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
	    ユーザー $database を作成します。
	    データベースを作成します $database;
	    データベース $database のすべての権限を $database に付与します。
EOSQL
}

if [ -n "$POSTGRES_MULTIPLE_DATABASES" ]; then
	echo "複数のデータベースの作成が要求されました: $POSTGRES_MULTIPLE_DATABASES"
	$(echo $POSTGRES_MULTIPLE_DATABASES | tr ',' ' '); のdbに対して
		ユーザーとデータベースの作成 $db
	終わり
	echo "複数のデータベースが作成されました"
フィ

以下はsqlスクリプトの例です。

ユーザー pkslowuser を作成します。

データベース logdata を作成します。
データベース logdata のすべての権限を pkslowuser に付与します。

データベース orderdata を作成します。
データベース orderdata のすべての権限を pkslowuser に付与します。

データベースuserdataを作成します。
データベース userdata のすべての権限を pkslowuser に付与します。

3 パッケージングと起動

Dockerfileを準備し、 shell/sqlスクリプト ファイルをイメージに配置します。

postgres:10 から
src/main/resources/create-multiple-postgresql-databases.sh /docker-entrypoint-initdb.d/ をコピーします。
src/main/resources/create-multiple-postgresql-databases.sql /docker-entrypoint-initdb.d/ をコピーします。

次のように開始します。

docker run -itd \
    --name pkslow-postgres \
    -e POSTGRES_MULTIPLE_DATABASES=db1,db2 \
    -e POSTGRES_USER=pkslow \
    -e POSTGRES_PASSWORD=pkslow \
    -p 5432:5432 \
    pkslow/postgresql-複数データベース:1.0-SNAPSHOT

起動が成功すると、次のデータベースが作成されます。

db1、db2、
ログデータ、注文データ、ユーザーデータ

4 結論

これは開発およびテスト段階で使用されるソリューションです。実際、データベースをコンテナに配置するのは良い選択ではありません。

コードを確認してください: https://github.com/LarryDpk/pkslow-samples

以上で、Docker で PostgreSQL を起動する際に複数のデータベースを作成する方法についての記事は終了です。Docker で PostgreSQL を起動する方法の詳細については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker デプロイメント postgresql データベースについて
  • Docker で PostgreSQL を実行し、いくつかの接続ツールを推奨する
  • ローカル Docker に Postgres 12 + pgadmin をインストールする方法 (Apple M1 をサポート)
  • Docker環境でPostgreSQLをアップグレードする詳細な手順
  • docker で PostgreSQL データベースをインストールして永続化する方法
  • dockerでPostgreSQLを実行する方法
  • docker 環境でのデータベース バックアップ (postgresql、mysql) のサンプル コード
  • docker をデプロイして postgres データベースにアクセスする方法

<<:  HTML4.0 要素のデフォルトスタイルの配置

>>:  MySQL binlog の解析

推薦する

ハイパーリンクを使用してリンクファイルを開く HTML 方式の紹介

a および href 属性 HTML では、英語ではアンカーと呼ばれるハイパーリンクを表すために &...

MySQL マルチインスタンス構成のアプリケーションシナリオ

目次MySQL 複数インスタンスマルチインスタンスの概要マルチインスタンスとは何ですか?複数のインス...

VMware Workstation 14 Pro(仮想マシン)にシステムをインストールする方法の詳細な説明

この記事では、VMware Workstation 14 Pro (仮想マシン) にシステムをインス...

JDBC 接続 (MySQL への接続) の 6 ステップのサンプル コード

JDBC の 6 つのステップ: 1. ドライバーを登録する2. データベース接続を取得する3. デ...

Nginx http ヘルスチェック構成プロセス分析

パッシブチェックパッシブ ヘルス チェックでは、NGINX と NGINX Plus はイベントの発...

Linux リダイレクトの使用方法の詳細な説明

誰でも時々データをコピーして貼り付ける必要があると思います。コピーして貼り付けるためにファイルを開く...

Mysql WorkBench のインストールと設定のグラフィックチュートリアル

この記事では、Mysql WorkBenchのインストールと設定のグラフィックチュートリアルを参考ま...

MySQL5.7+ MySQL Workbenchのインストールと設定方法のグラフィックチュートリアル(MAC)

この記事では、主にMACオペレーティングシステムでのMySQL5.7とMySQLWorkbenchの...

MySQL で union all を使用してユニオンソートを取得する方法

プロジェクトでは、何らかの不可逆的な理由により、テーブルに保存されたデータがページの表示要件を満たす...

MySQL 8.0.18 安定版がリリースされました! 予想通りハッシュ結合が実装されました

MySQL 8.0.18 安定版 (GA) が昨日正式にリリースされ、Hash Join も期待通り...

Windows 10 に Apache 2.4.41 をインストールするチュートリアル

1. Apache 2.4.41 のインストールと設定最初のステップは、以下に示すように、https...

src 属性と href 属性の違い

src と href には違いがあり、混同される可能性があります。 src は現在の要素を置き換える...

JavaScriptはパスワードボックスの検証情報を実装します

この記事では、パスワードボックスの検証情報を実装するためのJavaScriptの具体的なコードを例と...

Zabbix を使用して Nginx/Tomcat/MySQL を監視する方法の詳細なチュートリアル

目次ZabbixはNginxを監視するZabbixはTomcatを監視するZabbixはMySQLを...

VMware 仮想マシンに Centos7.3 をインストールするチュートリアル図

VMware の準備 CentOS の準備、こちらは CentOS 7.3 CentOS-7-x86...