データベースサービスを構築する
Railway 上で独自のデータベースサービス(Postgres など)をテンプレートとして構築・公開する方法を解説します。ボリューム・環境変数・接続方法などの設定手順を網羅。
著者: AIイノベーションズ 阿部隼也(X / Twitter)データベースサービスを構築する
Railway では、独自の Docker イメージを用いて「データベースサービス」をテンプレートとして公開できます。これにより、チームやコミュニティはワンクリックで再利用可能な DB サービスを立ち上げられます。
本ガイドでは、PostgreSQL を例に サービスソース、ボリューム、環境変数、接続方法 の 4 つの観点からテンプレート作成手順を説明します。
1. サービスソース (Service Source)
サービスソースは、Docker イメージや GitHub リポジトリなど Railway がビルド・実行する元 を指します。データベースの場合、多くは Docker Hub 公式イメージを利用します。
例: postgres:16-alpine
テンプレート作成時に Image を選択し、上記イメージ名を入力するだけで OK です。
2. ボリューム (Volumes)
データ永続化のためにストレージボリュームを割り当てます。
- テンプレート Canvas 上でサービスを選択
- Storage → Add Volume
- 容量を指定 (例: 1 GB 〜)
ボリュームは自動で /var/lib/postgresql/data
などコンテナ内部の標準パスへマウントされます。
バックアップ & リストア
Railway UI からスナップショットを取得でき、復元もワンクリックです。
3. 環境変数 (Environment Variables)
テンプレート側で 動的プレースホルダー を使うことで、デプロイ時に URL やパスワードが自動生成されます。
例: Postgres の接続文字列を POSTGRES_URL
という変数で公開する場合、テンプレート変数として ${{PGDATABASE_URL}}
を定義します。
変数 | 説明 |
---|---|
PGDATABASE_URL | postgres://user:[email protected]:5432/db 形式の完全 URL |
PGUSER | デフォルトユーザ |
PGPASSWORD | 自動生成されたパスワード |
Railway の Variable Reference 機能により、別サービスから ${{postgres-service.PGDATABASE_URL}}
のように参照できます。
4. 接続方法 (Connecting)
デプロイ後、クライアントアプリケーションは以下の手順で DB に接続します。
- 同一プロジェクト内で Private Networking が有効な場合、ホスト名は内部 DNS
postgres-service.internal
となります。 - 外部から接続する場合は、Ports で
5432
を公開し、生成されたドメイン名を使用します。 - クライアントの接続文字列に前章の環境変数を挿入します。
psql "${PGDATABASE_URL}"
まとめ
これで、PostgreSQL データベースをテンプレート化し、再利用可能なサービスとして公開する準備が整いました。テンプレートを Publish すれば、他の Railway ユーザーもワンクリックでデプロイできます。
次のステップとして、Redis や MongoDB など他のデータストアも同様の手順でテンプレート化してみましょう。Railway でインフラ構築をさらに効率化できます!
PR