AIイノベーションズ ブログ

【Railway】データベースを構築してデプロイする

最終更新日:
阿部隼也
阿部 隼也
AIイノベーションズ 代表取締役社長 | x.com/ai_abe_shunya
リアルタイムアンケートツール: LiveQ

お悩み相談AIチャット: AI相談.com

Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

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

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 の接続文字列を PGDATABASE_URL として公開する場合は、テンプレート変数に ${{PGDATABASE_URL}} を指定します。

変数 説明
PGDATABASE_URL postgres://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はこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

リアルタイムアンケートツール: LiveQ

お悩み相談AIチャット: AI相談.com