DockerのGoコンテナをGCPのCloud Runで動かしてみる
DockerのGoコンテナをGCPのCloud Runで動かしてみる。
■ Cloud Runが発表された
Dockerコンテナをcloud runにデプロイしてコンテナイメージを実行できるので試してみた。
Goのdockerコンテナを用意する
■ $ tree .
. ├── Dockerfile ├── docker-compose.yml └── main.go
■ Dockerfile
FROM golang:1.9 RUN mkdir /echo COPY main.go /echo CMD ["go", "run", "/echo/main.go"]
■ docker-compose.yml
version: "3" services: echo: build: . ports: - 9000:8080
■ main.go
package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {[f:id:yhidetoshi:20190620100529p:plain] log.Println("received request") fmt.Fprintf(w, "Hello Docker!!") }) log.Println("start server") server := &http.Server{Addr: ":8080"} if err := server.ListenAndServe(); err != nil { log.Println(err) } }
■ docker-compose up -d --build
docker_golang_echo
を作成した。
Container Registryにイメージを登録する
■ container registry のAPI有効化する
$ gcloud auth login $ gcloud auth configure-docker $ docker tag docker_golang_echo gcr.io/[PROJECT-ID]/golang-echo:ver1 $ docker push gcr.io/[PROJECT-ID]/golang-echo:ver1
cloud runに作成したコンテナをデプロイする
- cloud-runのAPIを有効にする
$ gcloud beta run deploy --image gcr.io/[PROJECT-ID]/golang-echo:ver1
実行結果
curl https://発行されたURL Hello Docker!!