Cloud Runを試す

公開日時

Cloud RunのチュートリアルQuickstart: Build and Deployに沿ってHello Worldコンテナをデプロイしてみる。

ついでにアカウント切り替えができるように設定した。

gcloud auth login 
gcloud config configurations create config-another-account
gcloud config set project cloud-run-sample
gcloud config set account another-account@example.com
  • HelloWorld goファイル作成
// helloworld.go
package main

import (
        "fmt"
        "log"
        "net/http"
        "os"
)

func handler(w http.ResponseWriter, r *http.Request) {
        log.Print("Hello world received a request.")
        target := os.Getenv("TARGET")
        if target == "" {
                target = "World"
        }
        fmt.Fprintf(w, "Hello %s!\n", target)
}

func main() {
        log.Print("Hello world sample started.")

        http.HandleFunc("/", handler)

        port := os.Getenv("PORT")
        if port == "" {
                port = "8080"
        }

        log.Fatal(http.ListenAndServe(fmt.Sprintf(":%s", port), nil))
}
  • Dockerfile
# Dockerfile
FROM golang:1.12 as builder

WORKDIR /go/src/helloworld
COPY . .

RUN CGO_ENABLED=0 GOOS=linux go build -v -o helloworld


FROM alpine
RUN apk add --no-cache ca-certificates

COPY --from=builder /go/src/helloworld/helloworld /helloworld

CMD ["/helloworld"]
  • ビルド、デプロイ
gcloud builds submit --tag gcr.io/{project-id}/helloworld
gcloud beta run deploy --image gcr.io/{project-id}/helloworld --platform managed

参考


Related #gcp

ngrokの代わりにinletsを使う

固定ドメインが設定できるのでbot開発に便利

inletsで複数ドメインが使えるようにする

CaddyのCloudflare Pluginを使ってワイルドカード証明書を設定した

Cloud Datastoreのローカル環境をDockerで構築する

CloudDatastoreエミュレータとgoogle-cloud-guiの環境を構築

gcloud configでアカウントを切り替える

gcloud config configurations activateで切り替える

Cloud RunアプリをCloud Buildでデプロイできるようにする

特定のブランチにpushしたらデプロイできるようになった

Cloud Buildの結果をSlackに通知する

公式ドキュメントの手順に沿って設定