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