データベースの準備
この構成では、外部データベースとして以下の要件を満たす PostgreSQL が必要になります。
- バージョン: 12 以上
- その他: 拡張モジュール pgcrypto がインストールされていること (RHEL系 であれば、postgresql-contrib パッケージをインストールしておく必要があります)
Docker が動作しているホストサーバ、あるいは別のサーバ上に要件を満たす PostgreSQL を準備してください。
接続仕様の準備
この構成では、Docker コンテナで動作するサービスからデータベースに接続するための情報を、環境変数 DATABASE_URL で指定する必要があります。
DATABASE_URL=pgsql://<ユーザ名>:<パスワード>@<アドレス>:<ポート番号>/<データベース名>
たとえば外部データベースの接続に必要なパラメータが以下のような場合を考えます。
設定項目 | パラメータ例 |
---|---|
ユーザ名 | kompira |
パスワード | kompira |
IPアドレス | 10.20.0.XXX |
ポート番号 | 5432 |
データベース名 | kompira |
この場合、環境変数 DATABASE_URL は次のように指定することになります。
DATABASE_URL=pgsql://kompira:kompira@10.20.0.XXX:5432/kompira
実際に準備した、またはこれから準備する PostgreSQL サーバの構成に合わせて、DATABASE_URL に指定する値を準備しておいてください。
PostgreSQL の準備
PostgreSQL のインストールについては準備する環境に合わせて、OS のマニュアルなどを参考にして実施してください。
以下では、PostgreSQL の最低限必要になる設定手順について記述しますので、用意した PostgreSQL サーバ上で実施してください。 詳細な設定方法については PostgreSQL のホームページや公式ドキュメントを参照してください。
(1) kompira ユーザーとデータベースの作成
ユーザを作成します。ここではデフォルトの "kompira" という名前で作成します。パスワードの設定も求められるのでこれもデフォルトの "kompira" と入力してください。
$ sudo -i -u postgres createuser -d -P "kompira"
上で作成したユーザをオーナーとするデータベースを作成します。ここではデフォルトの "kompira" という名前で作成します。
$ sudo -i -u postgres createdb --owner="kompira" --encoding=utf8 "kompira"
(2) PostgreSQL サーバの接続設定
ローカルホスト以外からも PostgreSQL サーバに接続できるように設定します。 postgresql.conf (RHEL系標準パッケージをインストールした場合は /var/lib/pgsql/data/postgresql.conf) の listen_address を以下のように設定してください。
listen_address = '*'
(3) PostgreSQL のクライアント認証の設定
手順 (1) で作成したユーザからパスワード接続できるように、pg_hba.conf (RHEL系標準パッケージをインストールした場合は /var/lib/pgsql/data/pg_hba.conf) に host 設定を追加してください。 たとえば Docker が動作しているホストが PostgreSQL サーバと同じネットワークに配置している場合は、以下のような行を追加してください。
host kompira kompira samenet scram-sha-256
あるいは、Docker が異なるネットワークに配置されている場合は、"samenet" の部分を CIDR 形式などで指定するようにしてください。
host kompira kompira 10.10.0.0/16 scram-sha-256
(4) PostgreSQL の再起動
これらの設定を行なった後は、一度 postgresql サービスを再起動してください。
$ sudo systemctl restart postgresql-<バージョン番号>