💽
Synology NAS上でPostgreSQLをDockerコンテナとして動かす
2行まとめ
- Synology NASではDockerコンテナを起動できる。
- Synology NAS上でPostgreSQLを起動することで、RAID構成のデータベース環境を手軽に構築できる。
はじめに
Synology製のNAS(Network Attached Storage)は、比較的自由度が高く、普通のLinuxマシンのようにいろいろなことができます。
今回は、そんなSynology NASでPostgreSQLを動かしてみました。
環境
今回使用したSynology NASは「DS720+」という機種で、スペックは以下の通りです。
- 3.5インチベイ: 2つ
- CPU: Intel Celeron J4125 2GHz
- メモリ: 2GB
- ネットワーク: 1Gbps Ethernet 2つ
Dockerパッケージをインストールする
Synology NASには「パッケージ」と呼ばれるソフトウェアを追加する機構があり、そのパッケージを使ってDocker環境を簡単に構築することができます。手順は以下の通りです。
- 管理者権限のあるユーザでDSM(DiskStation Manager)にログインする。
- 「パッケージセンター」を起動する。
- 画面上部の検索ボックスに「Docker」を入力して検索する。
- 「Docker」パッケージの「インストール」ボタンを押下する。
PostgreSQLコンテナを起動する
Dockerパッケージをインストールした後、以下の手順でPostgreSQLのコンテナを起動します。
- DSMにログインする。
- データ保存用の共有フォルダ、データ用ディレクトリを作成する。
- メニューから「Docker」を起動する。
- Dockerイメージをダウンロードする。
- Dockerコンテナを起動する。
- タブの「イメージ」を選択する。
- PostgreSQLのDockerイメージを選択する。
- 「起動」ボタンを押下する。
- 「全般設定」ダイアログボックスで「自動起動を有効にする」をチェックする。(必要に応じて)
- 「全般設定」ダイアログボックスで「詳細設定」ボタンを押下して、以下の環境変数を設定する。
-
TZ
:Asia/Tokyo
-
POSTGRES_PASSWORD
:postgres
ユーザのパスワード
-
- 「ポート設定」ダイアログボックスで
5432/tcp
をローカルポートにマップする。 - 「ボリューム設定」ダイアログボックスで
/var/lib/postgresql/data
ディレクトリにデータ用ディレクトリをマップする。
PostgreSQLのDockerイメージの詳細については、Docker Hubをご参照ください。環境変数についても説明があります。
設定例
Synology NASのDockerコンテナは、その設定をエクスポートすることができます。具体例を以下に示します。
インポートする場合は、以下の箇所を適宜書き換える必要があります。
-
env_variables
:-
TZ
: タイムゾーンを指定します。 -
POSTGRES_PASSWORD
:postgres
ユーザのパスワードを指定します。
-
-
name
: Dockerコンテナの名称を指定します。 -
port_bindings
: マップするポートを指定します。 -
volume_bindings
: データを保存するディレクトリを指定します。
{
"CapAdd" : null,
"CapDrop" : null,
"cmd" : "postgres",
"cpu_priority" : 50,
"enable_publish_all_ports" : false,
"enable_restart_policy" : true,
"enabled" : true,
"entrypoint_default" : "docker-entrypoint.sh",
"env_variables" : [
{
"key" : "PATH",
"value" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
},
{
"key" : "LANG",
"value" : "en_US.utf8"
},
{
"key" : "PG_MAJOR",
"value" : "13"
},
{
"key" : "PG_VERSION",
"value" : "13.5"
},
{
"key" : "PG_SHA256",
"value" : "9b81067a55edbaabc418aacef457dd8477642827499560b00615a6ea6c13f6b3"
},
{
"key" : "PGDATA",
"value" : "/var/lib/postgresql/data"
},
{
"key" : "TZ",
"value" : "Asia/Tokyo"
},
{
"key" : "POSTGRES_PASSWORD",
"value" : "password"
}
],
"exporting" : false,
"id" : "d58a4b3a7b43035e9435fe991fbff9e3248e8145e17baadc29e524de36f7880d",
"image" : "postgres:13.5-alpine",
"is_ddsm" : false,
"is_package" : false,
"links" : [],
"memory_limit" : 0,
"name" : "postgresql-13.5",
"network" : [
{
"driver" : "bridge",
"name" : "bridge"
}
],
"network_mode" : "bridge",
"port_bindings" : [
{
"container_port" : 5432,
"host_port" : 15432,
"type" : "tcp"
}
],
"privileged" : false,
"shortcut" : {
"enable_shortcut" : false,
"enable_status_page" : false,
"enable_web_page" : false,
"web_page_url" : ""
},
"use_host_network" : false,
"volume_bindings" : [
{
"host_volume_file" : "/docker/postgresql",
"mount_point" : "/var/lib/postgresql/data",
"type" : "rw"
}
]
}
psql
コマンドを使って接続する
PostgreSQLにPostgreSQLを起動した後は、同じDockerイメージに含まれているpsql
コマンドを使って接続することができます。以下に例を示します。
docker run -it --rm postgres:13.5-alpine psql -h <NASのホスト名/IPアドレス> -p <コンテナのポート番号> -U postgres
最後に
Synology NAS上に、PostgreSQL環境を簡単に構築することができました。
Dockerイメージが提供されているソフトウェアであれば、同じように手軽に起動できると思います。
自由度の高いSynology NAS、なかなかおすすめです。
Discussion