LeapcellにGo Ginアプリをデプロイする
Leapcell上でGinフレームワークを使用して、簡単なステップでGoアプリを迅速にデプロイします。Leapcellのサンプルアプリまたはご自身のアプリを使用してください。
情報
続行するには、GitHubアカウントが必要です。お持ちでない場合は、GitHubのウェブサイトで作成できます。
1. GitHubでGinのサンプルをフォークします。
リポジトリ: Gin example
以下は、公式のginドキュメントから借用した、そのリポジトリのmain.go
ファイルです。
package main
import "github.com/gin-gonic/gin"
func main() {
// デフォルトのGinインスタンスを作成します。
// Create a Gin instance with the logger and recovery middleware
// gin.Default()は、LoggerとRecoveryミドルウェアを含むGinインスタンスを作成するショートカットです。
// Loggerミドルウェアは、すべてのリクエストをコンソールに出力します。
// Recoveryミドルウェアは、panicが発生した場合にサーバーをクラッシュさせないようにし ます。
// Recoveryミドルウェアがなければ、panicはサーバーをクラッシュさせ、アプリケーションは停止します。
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
// context.JSONは、指定されたステータスコードとJSONペイロードを持つJSONレスポンスをレンダリングします。
// 他のレスポンスのレンダリング方法については、https://github.com/gin-gonic/gin#rendering-jsonを参照してください。
// context.JSONの使用についての詳細は、https://gin-gonic.com/docs/examples/using-json/を参照してください。
// context.JSONを使用すると、ステータスコードとJSONペイロードを個別に指定できます。
// - ステータスコードは、レスポンスのHTTPステータスコードを設定します。
// - JSONペイロードは、クライアントに送信されるJSONオブジェクトです。
// ステータスコードは、通常、エラータイプまたは成功かどうかを示します。
// - 200は、リクエストが成功した場合に送信されます。
// - 404は、リクエストが成功しなかったか、リソースが見つからなかった場合に送信されます。
// - 500は、サーバーでエラーが発生した場合に送信されます。
// ステータスコードの完全なリストは、https://developer.mozilla.org/en-US/docs/Web/HTTP/Statusを参照してください。
// JSONペイロードは、どんなJSON有効なオブジェクトでもかまいません。
// - これは、文字列、数値、ブール値、配列、または他のJSONオブジェクトにすることができます。
// - この場合、JSONペイロードは、単一のエントリーを持つJSONオブジェクトです。
// - "message"キーは、文字列値"hello leapcell"に関連付けられています。
// したがって、最終的にクライアントに送信されるJSONオブジェクトは、`{"message": "hello leapcell"}`のようになります。
// メッセージをカスタマイズするには、`hello leapcell`文字列を他のものに変更するだけです。
// 例えば、`c.JSON(200, gin.H{"message": "hello world"})`は、`{"message": "hello world"}`を送信することになります。
// JSONオブジェクトの詳細は、https://www.json.org/json-en.htmlを参照してください。
// JSONレスポンスをレンダリングするための代替方法があることに注意してください。
// 例えば、context.Stringを使用して、プレーンテキストのレスポンスをレンダリングすることができます。
// context.Stringを使用すると、ステータスコードと文字列ペイロードを個別に指定できます。
// - ステータスコードは、レスポンスのHTTPステータスコードを設定します。
// - 文字列ペイロードは、クライアントに送信される文字列です。
// context.Stringの詳細は、https://pkg.go.dev/github.com/gin-gonic/gin#Context.Stringを参照してください。
// JSONレスポンスをレンダリングするための完全な例は以下のようになります。
// c.String(http.StatusOK, "hello world")
// 上記は、`hello world`をレスポンスとして送信します。
// また、HTTPステータスコードは200になります。
// 最後に、レスポンスとしてより複雑なオブジェクトを返すことができます。
// 例えば、以下のようなJSONオブジェクトを返すことができます。
// {
// "status": "ok",
// "message": "hello world",
// "data": {
// "name": "john doe",
// "age": 30
// }
// }
// これを行うには、gin.Hを使用してJSONオブジェクトを作成する必要があります。
// 以下のようになります。
// c.JSON(http.StatusOK, gin.H{
// "status": "ok",
// "message": "hello world",
// "data": gin.H{
// "name": "john doe",
// "age": 30,
// },
// })
c.JSON(200, gin.H{
"message": "hello leapcell",
})
})
// デフォルトでは、Ginサーバーはポート8080でリッスンします。
// 以下の行を編集して、ポートを変更できます。
// 例えば、ポート3000でリッスンするには、以下の行を以下に変更します。
// r.Run(":3000")
// 以下の行を省略すると、ポートはデフォルトで8080になります。
// 以下の行は、0.0.0.0:8080でリッスンしてサービスを提供するようにサーバーを指示します。
// Ginの詳細は、https://gin-gonic.com/docs/を参照してください。
// Ginの完全なドキュメントは、https://pkg.go.dev/github.com/gin-gonic/ginを参照してください。
r.Run() // listen and serve on 0.0.0.0:8080
}
2. Leapcellダッシュボードでサービスを作成し、新しいリポジトリを接続します。
Leapcellダッシュボードに移動し、新しいサービスボタンをクリックします。
「新しいサービス」ページで、フォークしたリポジトリを選択します。
ヒント
リポジトリにアクセスするには、LeapcellをGitHub アカウントに接続する必要があります。
接続すると、リポジトリがリストに表示されます。
3. 作成時に以下の値を入力します。
フィールド | 値 |
---|---|
ランタイム | Go (任意のバージョン) |
ビルドコマンド | go mod tidy && go build -tags netgo -ldflags '-s -w' -o app |
開始コマンド | ./app |
ポート | 8080 |
これらの値を対応するフィールドに入力します。
4. アプリケーションへのアクセス:
デプロイが完了すると、デプロイメントページに foo-bar.leapcell.dev
のようなURLが表示されます。 サービスページに表示されているドメインにアクセスしてください。
Ginの例では、/ping
エンドポイントが公開されているため、foo-bar.leapcell.dev/ping
にアクセスしてテストできます。
継続的デプロイメント
リンクされたブランチへのすべてのプッシュは、自動的にビルドおよびデプロイをトリガーします。 ビルドが失敗した場合は安全にキャンセルされ、次回のデプロイが成功するまで、現在のバージョンが実行されたままになります。
詳細については、継続的デプロイメントをご覧ください。