GKE上にアプリをデプロイさせる上でこれまで作ったアプリのイメージをレジストリに登録します。レジストリにはGCPのGoogle Container Registryを使ってみたいと思います。
概要
Container Registry とは
Docker Hubと同じようにDockerイメージを登録するレジストリになります。ユーザのアクセス制限やCI/CDの統合があらかじめされているので、CI/CDのパイプラインの自動化に役立ちます。Container Registryに登録したイメージをGKE上にデプロイするために事前に必要なイメージを登録していければと思います。
cloud.google.com
実践
Container Registry の認証
イメージを Container Registry にpush または pullするための認証を行います。
$ gcloud auth configure-docker
イメージをビルドする
Dockerfileよりイメージをビルドします。
$ docker image build -f Dockerfile-express-kube -t express-app . # 動作確認 $ docker container run --name express-app -d -p 8888:3001 express-app
イメージにレジストリ名をタグ付けする
Container Registryに登録するためにイメージにタグ付けを行います。
$ docker tag express-app gcr.io/[project id]/express-app:tag1
イメージを Container Registryにpushする
タグ付けが完了したら次のようにしてpushします。
$ docker push gcr.io/[project id]/express-app:tag1
レジストリに登録できたか確認する
次のようにして登録できたことを確認します。
$ gcloud container images list-tags gcr.io/[project id]/express-app DIGEST TAGS TIMESTAMP 13a7ea547637 tag1 2020-03-02T18:31:48 3be96f71d228 2020-03-02T17:37:13
コンソールでも確認できます。
イメージを Container Registry から pull する
$ docker pull gcr.io/[project id]/express-app:tag1
イメージを起動
$ docker container run --name express-app-gke -d -p 8887:3001 gcr.io/[project id]/express-app:tag1 8e8634484d982e96708e11aeabac24143100e652fd4112a91500b32dcba3e3c2
このような感じでアプリに必要なイメージを全て登録します。
$ docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE express-app latest 02624ede8026 20 minutes ago 959MB react-app latest 7e07a729775a 21 minutes ago 1.08GB nginx-express latest f8f0926b2c94 24 minutes ago 170MB nginx-react latest f8f0926b2c94 24 minutes ago 170MB nginx latest a1523e859360 4 days ago 127MB node latest e0e011be5f0f 5 days ago 942MB
準備ができたら次にイメージをGKE上にデプロイして行ければと思います。