【Railway】データベースを構築してデプロイする
Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)
データベースサービスを構築する
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 の接続文字列を 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 に接続します。
- 同一プロジェクト内で Private Networking が有効な場合、ホスト名は内部 DNS の
postgres-service.internalになります。 - 外部から接続する場合は、Ports で
5432を公開し、生成されたドメイン名を使用します。 - クライアントの接続文字列に前章で設定した環境変数を挿入します。
psql "${PGDATABASE_URL}"まとめ
これで、PostgreSQL データベースをテンプレート化し、再利用可能なサービスとして公開する準備が整いました。テンプレートを Publish すれば、他の Railway ユーザーもワンクリックでデプロイできます。
次のステップとして、Redis や MongoDB など他のデータストアも同様の手順でテンプレート化してみましょう。Railway を使えば、インフラ構築をよりスムーズに進められます。
Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)
ブログ