My Note

自己理解のためのブログ

DockerのGoコンテナをGCPのCloud Runで動かしてみる

DockerのGoコンテナをGCPのCloud Runで動かしてみる。

■ Cloud Runが発表された

www.publickey1.jp

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

f:id:yhidetoshi:20190620100529p:plain

cloud runに作成したコンテナをデプロイする

  • cloud-runのAPIを有効にする
  • $ gcloud beta run deploy --image gcr.io/[PROJECT-ID]/golang-echo:ver1

f:id:yhidetoshi:20190620100554p:plain

f:id:yhidetoshi:20190620100613p:plain

実行結果

curl https://発行されたURL
Hello Docker!!