my_back_pages

プログラミング学習の記録 Ruby / Rails / FjordBootCamp

【Render】Web Service(アプリ)とPostgreSQL(DB)のRegionは合わせよう【Railsチュートリアル】

サマリ

  • RenderでWebアプリケーションを作る際に、DBを作成する際に「Region」をアプリ側と合わせないと、デプロイが失敗する。

Railsチュートリアルを進める中でハマったので、念のためのメモです。

Renderとは

Renderは、静的ページやWebアプリケーションを簡単にデプロイ(本番運用のための配備)できるプラットフォームを提供してくれるサービス(PaaS)です。

render.com

GitHub上のリポジトリとRenderを連携させることで、ワンクリックでリポジトリ上のWebアプリケーションをデプロイできます。

(ワンクリックどころか、リモートリポジトリの更新に合わせてオートデプロイする設定も可能。)

本番用のDBの作成や、Webアプリとの連携(アプリ側のサーバにDBを参照するための環境変数を設定する)などもダッシュボード上で簡単に行なえます。

 

Renderについての詳しい説明は、下の記事などを参照されてください。

zenn.dev

 

ハマったこと

私がいま取り組んでいるRailsチュートリアルでは、作ったWebアプリを本番環境にデプロイすることもカリキュラムに含まれており、そのためにRenderを使用します。

railstutorial.jp

  1. 静的なページを表示するアプリを作成した段階で、DBを作らずにデプロイ
  2. モデル(アプリ登録者のモデルであるUserモデル)を実装し、Render上で本番用のDBを作成、Webアプリと連携してデプロイ

  3. 以降は上記をベースにユーザー認証などの機能を追加

上記のような流れのカリキュラムになっています。

 

2.のパートにこぎつけた私は、チュートリアルのガイドの通りにDBを新規作成し、そのDBにアクセスするための内部パス(Internal Database URL)をWebアプリ側の環境変数に設定して、いざデプロイ!

……したかったのですが、ここで何度リトライしてもデプロイが失敗。

 

ログを見ると「(私がパスで指定した)そんな名前のDBはどこにも見つからないよ」的なメッセージを残して、DB接続エラーになっていました。

しかし、作成したDB側を参照するための Internal Database URL を渡すことにあたり、タイポやコピペミスをしていないことは何度も確認したので、「見つからない」と言われる理由がわからない。

ここで結構時間を溶かしてしまいました。

原因

  • Webアプリ側のサーバのRegionと、DB側のRegionが一致していなかった。

RenderではWebアプリやDBを作成する際に、「Region」を設定する必要があります。

 

私が沼っていたとき、このRegionの設定が、

のようになっていたことが原因で、デプロイ時にアプリがDBにうまく接続できなかったようでした。

一度作ったDBのRegionを変更することは(たぶん)できなさそうなので、同様のミスをしていたらDBを再作成すると、無事デプロイ成功。

 

Renderのダッシュボードの管理画面で、Regionが揃っているかを確認できる

その後、Region選択画面に「DBのRegionはアプリとそろえないと駄目ですよ」という注意書きがあることに気づく……。

初回作成時に見逃してさらっとデフォルトで進めていました。このあたり、今後はもっと注意しなければと反省しております。

そのほか

私は現在「フィヨルドブートキャンプ」というスクールでプログラミングを勉強しています。

bootcamp.fjord.jp

来週からチーム開発のカリキュラムに入るにあたり、Railsの復習を兼ねて「Railsチュートリアル」にここ数日取り組んでおり、その過程でハマったことのシェアが本記事になります。

まだまだプログラミング入門者の私ですが、アウトプットの練習も兼ねて気づきやわかったことをシェアしていきたいなと思っております。