👀

Go × PostgreSQL RenderでWebアプリをデプロイする

に公開

背景

Herokuがとある理由で使えなくなったので、Herokuの代替Paasを検討する必要が出てきた。
いくつか検討したうち、フルマネージドで簡単に扱えるという点がHerokuに似ていたため、Renderを使うことにした。
(SSLとか証明書の自動更新とか本当にありがたい。)

本記事はその手順の備忘録になります。

前提

  • GitHubアカウントを持っている
  • Go製アプリケーション(Ginなど)がGitHubにPushされている
  • .env による設定ファイル or 環境変数で構成されている
  • データベースとして PostgreSQL を利用する

1. Renderアカウントの作成

  1. https://render.com にアクセス
  2. GitHubアカウントでログイン / 新規登録
  3. GitHubへのアクセスを許可

プランについて
個人利用ならHobbyで無料で使えるのが良い(team機能は使えない)
※ Professional($19/月)の場合は10ユーザーまでのteam機能が使える
(使ってみてわかったが、1人につき$19ドルだった)

2. Web Service(Goアプリ)を作成

  1. Dashboard → 「New」→「Web Service」
  2. GitHubのリポジトリを選択
  3. 下記のように入力:
設定項目 値例
Name アプリ名
Runtime Go
Build Command go build -o main .
Start Command ./main
Region Singapore(日本から最速)
Branch main(または選択したブランチ)
Instance Type Free 0.1 CPU 512 MB($0/月)


4. Create Web Service をクリック

3. データベース(PostgreSQL)を作成

  1. Dashboard → 「New」→「PostgreSQL」
  2. 下記のように設定:
設定項目 値例
Name my-app-db
Plan Hobby(無料) or Basic($6〜)
Region Webサービスと同じリージョン
  1. 作成後、DB接続情報が表示される(例:postgres://user:pass@host:port/dbname

4. 環境変数の設定

  1. Web Service画面 → 「Environment」タブ
  2. .envで使っている環境変数をここに追加
    例:
DATABASE_URL=postgres://user:pass@host:port/dbname
APP_ENV=production
PORT=10000

Renderは PORT 環境変数を内部的に使うので、アプリ側でも os.Getenv("PORT") を読むようにしておく必要がある。

5. 自動デプロイの確認

  • GitHubで main ブランチにPushするたびに自動デプロイされる
  • Dashboard → Deploy Logs でビルド状況を確認

6. 動作確認

  • Web Service画面に表示されているURLでアクセス(例:https://my-app-api.onrender.com
  • APIや管理画面、DB操作が正常に動作しているかチェック

補足:render.yaml を使った構成管理

プロジェクトルートに以下を追加しておくと、再デプロイやチーム共有に便利。

services:
  - type: web
    name: my-app-api
    env: go
    buildCommand: "go build -o main ."
    startCommand: "./main"
    plan: starter
    region: singapore
    branch: main
    autoDeploy: true

databases:
  - name: my-app-db
    plan: starter
    region: singapore

Renderでのメリット

  • 自動SSL(Let’s Encrypt)
  • GitHubと連携したCI/CD
  • スリープなしの常時起動(Starter以上)
  • データベースの自動バックアップ(有料)

まとめ

ステップ 内容
アカウント作成 GitHub連携で即ログイン
Web Service作成 Goアプリのデプロイ設定
DB作成 PostgreSQLをクリックで構築
環境変数設定 .env 相当をGUIで設定
自動デプロイ Pushで即デプロイ

感想

Herokuの代替と思っていたが、普通にHerokuより良い気がする。
個人なら無料でセキュアにデプロイまでいけるのはでかい。
ログ関しとかwebhookも標準で整備されてるのもかなりいい。
CI/CD環境についての勉強や検証、フルスタックでの個人開発とかにはもってこいかも。

関連リンク

Discussion