Cloud Run jobsを試してみた
タイトルどおり、Cloud Run jobsを使ったことがなかったので試してみた。
手順
検証用のアプリ作成
main.go
package main import "fmt" func main() { fmt.Println("start process") fmt.Println("something process") fmt.Println("finish process") }
Dockerfile
FROM golang:1.21-alpine AS builder WORKDIR /usr/local/src/ ADD go.mod ./ RUN go mod download ADD . . RUN go build -o /go/bin/app ./main.go FROM alpine:latest COPY --from=builder /go/bin/app / CMD ["/app"]
動作確認
下のように3つの文字列が表示されたら、OK
# 動作確認 > docker build . -t test-app > docker run --rm test-app start process something process finish process
イメージのpush
artifact registoryにレポジトリを作成し、イメージをpushする
> PROJECT=$(gcloud config get-valud project) > REGION=$(gcloud config get-value compute/region) # dockerとの連携(docker pushするために必要) > gcloud auth configure-docker asia-northeast1-docker.pkg.dev # レポジトリの作成 > gcloud artifacts repositories create docker-repo --repository-format=docker --location="${REGION}" --description="Docker repository" # レポジトリのリスト確認 > gcloud artifacts repositories list # tag付けしてpush > REPO="asia-northeast1-docker.pkg.dev/${PROJECT}/docker-repo" > docker tag test-app "${REPO}/test-app" > docker push "${REPO}/test-app"
ジョブを作成し、実行
> gcloud run jobs create sample-job --image "${REPO}/test-app:latest" --region "${REGION}" > gcloud run jobs execute sample-job --region "${REGION}" # 実行結果の確認 > gcloud beta run jobs logs read sample-job --region "${REGION}" 2023-10-15 04:09:19 start process 2023-10-15 04:09:19 something process 2023-10-15 04:09:19 finish process
とりあえず、jobを動作させることはできた。 実際にはCloud Schedulerでの定期実行とは何かのPub/Subあたりでのイベント駆動をさせるのが使い方になるんだとは思う。
後片付け
gcloud run jobs delete sample-job --region "${REGION}" gcloud artifacts repositories delete docker-repo --location "${REGION}"