Railway/Guides
Beego アプリをデプロイする
Go 製フレームワーク Beego で開発したアプリを Railway にデプロイする方法を、日本語で詳しく解説します。テンプレート、CLI、GitHub、Dockerfile など複数の手法を網羅。
著者: AIイノベーションズ 阿部隼也(X / Twitter)Beego アプリをデプロイする
Beego は Go 言語で書かれたハイパフォーマンスな Web フレームワークで、REST API や Web アプリ、バックエンドサービスを迅速に構築できます。
本ガイドでは、Beego アプリを Railway にデプロイする 4 つの方法を紹介します。
- テンプレートからワンクリックデプロイ
- GitHub リポジトリからデプロイ
- Railway CLI からデプロイ
- Dockerfile を使ったデプロイ
Beego アプリを作成する
既に Beego プロジェクトがある場合はこの章をスキップしてください。
go install github.com/beego/bee/v2@latest # CLI インストール
bee new helloworld
cd helloworld
go mod tidy
Postgres ドライバの追加
go get github.com/lib/pq
main.go
の例
package main
import (
"fmt"
_ "helloworld/routers"
_ "github.com/lib/pq"
"github.com/beego/beego/v2/client/orm"
beego "github.com/beego/beego/v2/server/web"
)
type Users struct {
ID int `orm:"column(id)"`
FirstName string `orm:"column(first_name)"`
LastName string `orm:"column(last_name)"`
}
func init() {
orm.RegisterDriver("postgres", orm.DRPostgres)
orm.RegisterDataBase("default", "postgres", beego.AppConfig.String("db_url"))
orm.RegisterModel(new(Users))
orm.RunSyncdb("default", false, true)
}
func main() {
o := orm.NewOrm()
users := []Users{{FirstName: "Railway", LastName: "Beego"}}
for _, u := range users {
if id, err := o.Insert(&u); err == nil {
fmt.Println("Inserted user id", id)
}
}
beego.Run()
}
conf/app.conf
の設定
appname = helloworld
runmode = dev
db_url = ${DATABASE_URL}
ローカル実行は bee run
で OK です。
Railway へのデプロイ方法
テンプレートからワンクリックデプロイ
Railway テンプレートマーケットプレイスに Beego テンプレートが用意されています。クリック 1 回でデプロイが完了し、Postgres も自動で接続されます。
CLI からデプロイ
railway init # 初期化
railway add -d postgres # DB 追加
railway add # Empty Service → 環境変数 DATABASE_URL 設定
railway up # デプロイ
railway domain # 公開 URL 発行
GitHub リポジトリからデプロイ
- Deploy from GitHub repo を選択しリポジトリを連携
- Postgres を追加し
DATABASE_URL
を設定 - Deploy をクリック
- Generate Domain で公開 URL を取得
Dockerfile を使ったデプロイ
FROM golang:1.22 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o app
FROM gcr.io/distroless/base-debian11
WORKDIR /app
COPY --from=builder /app/app ./app
COPY --from=builder /app/conf ./conf
COPY --from=builder /app/views ./views
COPY --from=builder /app/static ./static
ENV PORT=${PORT:-8080}
EXPOSE 8080
CMD ["/app/app"]
次のステップ
- 認証 – Beego のフィルタと JWT を使って認証を実装
- ORM マイグレーション –
gorm
やbeego orm
のマイグレーションを自動実行
Go × Beego × Railway でスケーラブルなバックエンドを構築しましょう!
PR