👀
Go × PostgreSQL RenderでWebアプリをデプロイする
背景
Herokuがとある理由で使えなくなったので、Herokuの代替Paasを検討する必要が出てきた。
いくつか検討したうち、フルマネージドで簡単に扱えるという点がHerokuに似ていたため、Renderを使うことにした。
(SSLとか証明書の自動更新とか本当にありがたい。)
本記事はその手順の備忘録になります。
前提
- GitHubアカウントを持っている
- Go製アプリケーション(Ginなど)がGitHubにPushされている
-
.env
による設定ファイル or 環境変数で構成されている - データベースとして PostgreSQL を利用する
1. Renderアカウントの作成
- https://render.com にアクセス
- GitHubアカウントでログイン / 新規登録
- GitHubへのアクセスを許可
プランについて
個人利用ならHobbyで無料で使えるのが良い(team機能は使えない)
※ Professional($19/月)の場合は10ユーザーまでのteam機能が使える
(使ってみてわかったが、1人につき$19ドルだった)
2. Web Service(Goアプリ)を作成
- Dashboard → 「New」→「Web Service」
- GitHubのリポジトリを選択
- 下記のように入力:
設定項目 | 値例 |
---|---|
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)を作成
- Dashboard → 「New」→「PostgreSQL」
- 下記のように設定:
設定項目 | 値例 |
---|---|
Name | my-app-db |
Plan | Hobby(無料) or Basic($6〜) |
Region | Webサービスと同じリージョン |
- 作成後、DB接続情報が表示される(例:
postgres://user:pass@host:port/dbname
)
4. 環境変数の設定
- Web Service画面 → 「Environment」タブ
-
.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