AIイノベーションズ
Railway/Guides

データベースサービスを構築する

Railway 上で独自のデータベースサービス(Postgres など)をテンプレートとして構築・公開する方法を解説します。ボリューム・環境変数・接続方法などの設定手順を網羅。

著者: AIイノベーションズ 阿部隼也X / Twitter

Railwayはこちら

データベースサービスを構築する

Railway では、独自の Docker イメージを用いて「データベースサービス」をテンプレートとして公開できます。これにより、チームやコミュニティはワンクリックで再利用可能な DB サービスを立ち上げられます。

本ガイドでは、PostgreSQL を例に サービスソースボリューム環境変数接続方法 の 4 つの観点からテンプレート作成手順を説明します。


1. サービスソース (Service Source)

サービスソースは、Docker イメージや GitHub リポジトリなど Railway がビルド・実行する元 を指します。データベースの場合、多くは Docker Hub 公式イメージを利用します。

例: postgres:16-alpine

テンプレート作成時に Image を選択し、上記イメージ名を入力するだけで OK です。


2. ボリューム (Volumes)

データ永続化のためにストレージボリュームを割り当てます。

  1. テンプレート Canvas 上でサービスを選択
  2. StorageAdd Volume
  3. 容量を指定 (例: 1 GB 〜)

ボリュームは自動で /var/lib/postgresql/data などコンテナ内部の標準パスへマウントされます。

バックアップ & リストア

Railway UI からスナップショットを取得でき、復元もワンクリックです。


3. 環境変数 (Environment Variables)

テンプレート側で 動的プレースホルダー を使うことで、デプロイ時に URL やパスワードが自動生成されます。

例: Postgres の接続文字列を POSTGRES_URL という変数で公開する場合、テンプレート変数として ${{PGDATABASE_URL}} を定義します。

変数説明
PGDATABASE_URLpostgres://user:[email protected]:5432/db 形式の完全 URL
PGUSERデフォルトユーザ
PGPASSWORD自動生成されたパスワード

Railway の Variable Reference 機能により、別サービスから ${{postgres-service.PGDATABASE_URL}} のように参照できます。


4. 接続方法 (Connecting)

デプロイ後、クライアントアプリケーションは以下の手順で DB に接続します。

  1. 同一プロジェクト内で Private Networking が有効な場合、ホスト名は内部 DNS postgres-service.internal となります。
  2. 外部から接続する場合は、Ports5432 を公開し、生成されたドメイン名を使用します。
  3. クライアントの接続文字列に前章の環境変数を挿入します。
psql "${PGDATABASE_URL}"

まとめ

これで、PostgreSQL データベースをテンプレート化し、再利用可能なサービスとして公開する準備が整いました。テンプレートを Publish すれば、他の Railway ユーザーもワンクリックでデプロイできます。

次のステップとして、Redis や MongoDB など他のデータストアも同様の手順でテンプレート化してみましょう。Railway でインフラ構築をさらに効率化できます!

Railwayはこちら

PR