👻
速攻でCloud RunにGoのAPIサーバーを立てる
なぜやろうと思ったのか
Unityでとある機能を実装したかった時にWebアプリ側の実装を待つ必要がありました。
とりあえずUnityサイドだけで実装を試してみたかったのでこちらの選択をしました。
実装方法
大まかな流れ
- GoでAPIサーバーの実装
- Dockerfile作成
- GCPのCLIをインストールし初期設定をすます
- GCPのプロジェクト作成
- Docker Imageのプッシュ
- GCP設定画面からイメージをデプロイボタンをポチる
GoでAPIサーバーを作る
package main
import (
"net/http"
)
func helloHandler(w http.ResponseWriter, r *http.Request) {
if r.Method == http.MethodGet {
w.Write([]byte("Hello, World!"))
} else {
http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
}
}
func main() {
http.HandleFunc("/hello", helloHandler)
// Start the server on port 8080
http.ListenAndServe(":8080", nil)
}
デプロイされたAPIサーバーにGETメソッドを送ったら"Hello, World!"を返すサーバーを作成。
Dockerfileを作成
FROM golang:latest
LABEL maintainer="Your Name <your.email@example.com>"
WORKDIR /app
COPY go.mod ./
RUN go mod download
COPY . .
RUN go build -o main .
EXPOSE 8080
CMD ["./main"]
GCPのCLIをインストールし初期設定をすます
公式ページ
公式ページに沿って設定していくと簡単に自分のGCPアカウントと紐づけできます!
途中でログインする必要がありますが自動でブラウザが開いて指定のアカウントでログインするとか…
GCPでプロジェクトを作成する
プロジェクトを作成する
プロジェクトIDは必要になるので控えておく。
検索欄で調べてコンテナレジストリとCloud Runを有効化しておく。
Docker Imageのビルド、プッシュ
docker build -t gcr.io/testgcpid/hello-app .
docker push gcr.io/testgcpid/hello-app
testgcpid
は先ほど控えておいたIDになります!
hello-app
は自由に指定できてアプリの表示名になります!
GCP設定画面からイメージをデプロイボタンをポチる
コンテナレジストリを開きCloud Runにデプロイするボタンを押す
初回だとサービスアカウントを作ってと出るかも。。。
押したらアプリの初期設定画面が出る
リージョンを指定
認証の指定
作成でデプロイが開始し数秒後にデプロイが完了します!
試す方法
Cloud Runのページを開きURLを確認する
指定のURLにcurlコマンドでリクエストを送るとメッセージが返ってきたら成功!
curl -X GET http://localhost:8080/hello
恋愛メタバースMemoriaを運営するFlamers, Inc.のTech Blogです。 Unity / C# / VR系の記事を中心に投稿します。 常時積極採用中!wantedly.com/companies/flamers
Discussion