miyazi888の覚え書き日記

学習したことを書き留めてます。

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}"

参考

cloud.google.com

zenn.dev