さくらのVPSにDockerにてPostgreSQLを入れる
さくらのVPSでPostgreSQLを動作させて、アプリ検証用環境を作る(Dockerにて)
さくらのVPS 1ギガプラン(お試しなのでお手軽に・・)
OS:AlmaLinux9.1 インストール済み
さくらのVPS AlmaLinux9セットアップ情報
SSHでのさくらのVPSへの接続環境の準備
私はMacを利用しているので、Macからターミナルを利用して SSHでさくらのVPSに接続。以下ページを参考に実施。
さくらのVPSにMACのターミナルからSSH接続する方法 | さくらインターネットのVPS設定マニュアル
DokcerとDocker-Composeのインストール
こちらのページを参考にしました。
AlmaLinuxにDockerとdocker-composeを導入する - Qiita
ワークディレクトリ準備
mkdir /home/hogehogehoge/docker/postgresql
docker-compose.yml準備
sudo vi /home/hogehogehoge/docker/postgresql/docker-compose.yml
下記内容で保存します。db-storeという名前で volumes指定をしておきます。
version: "3"
services:
db:
image: postgres:14
container_name: postgres
ports:
- 5432:5432
volumes:
- ./db-store:/var/lib/postgresql/data
environment:
POSTGRES_INITDB_ARGS: "--encoding=UTF-8 --locale=C"
POSTGRES_PASSWORD: "hogehogehogehogeMuz%ukashiiPassword1!!!"
volumes:
db-store:
起動
ymlファイル保存先のカレントディレクトリへ移動し、docker-composeにて起動。DBインスタンスが起動して、指定ボリュームにファイルが永続化されます。
sudo docker-compose up -d
pg_hba.confの修正
sudo vi /home/hogehogehoge/docker/postgresql/db-store/pg_hba.conf
自身のサーバーからはの接続は許可。その他は特定のデータベース名(ここでは 任意の名称のreportsとしてあります)と、特定のクライアントIPからの接続に限定します。(xxxは許可するアドレスを入力)
IPv4 local connections:
host all all 127.0.0.1/32 md5
host reports all xxx.xxx.xxx.xxx/xx md5
postgresql.confの修正
sudo vi /home/hogehogehoge/docker/postgresql/db-store/postgresql.conf
ログの出力を修正しておきます(編集項目抜粋)。ログコレクタの有効化と出力パス指定。ログローテーションと曜日別にログを出力する形に修正。
logging_collector = on
log_directory = 'log’
log_rotation_age = 1d
log_truncate_on_rotation = on
log_filename = 'server_log.%a’
Docker PostgreSQL再起動
一回、Dockerの動作を止めて、再起動します。カレントディレクトリに移動して、
sudo docker-compose down
sudo docker-compose up -d
外部からのDB接続確認
メンテナンス用にPostgreSQLを外部から接続できるかを確認します。データベースはあらかじめ作成しておきました。
一時的に、さくらのVPSのコントロールパネルから、パケットフィルタで指定ポート番号への通信許可を有効にします(接続確認後、あとで設定は削除します)
pgAdminでデータベースが参照できることを確認します。
まとめ
お試し環境なので、最低限の設定にて、とりあえず実行できました。さあ、アプリと連動させる準備ができたので、Asp.Net Core RazorPagesにて、アプリを作ってみようっと。
Discussion