GWがもう終わってしまう。。。復帰に向けてそろそろコード書かないとな。
Cloud Buildでのデプロイ時のサーバー転送用に、tarとsshが使えるイメージが欲しかったので、
手元で作成して、Container Registryにsubmitする方法をまとめてみる。
質問・訂正・改善・苦情・ご意見あれば、コメントにてよろしくお願いします。
事前準備
- gcp上に対象プロジェクトがあること
- gcloud コマンドが使えること
- gcloud auth login してること
- gcloud config set project {project_name} で対象プロジェクトを指定していること
この辺毎度必要になってくるので別途まとめておきたい。
この辺り、まとめました。
gcloudコマンド事始め(Docker)
APIを有効化
下記のAPIを Google Cloud Platform Console で有効にする。
- Container Registry API
- Cloud Build API
Dockerfileを用意
とりあえずこんな感じ
FROM debian:stretch
RUN apt-get update && apt-get install -y --no-install-recommends \
tar \
bzip2 \
gzip \
ssh \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
tar, ssh 圧縮用に gzipとbzip2入れてみた。
Submit(Container Registryにイメージをアップロード)
# 前述のDockerfileがあるディレクトリで
# プロジェクト名
PROJECT_ID=some_project_name
# 新しく作成するイメージの名称
IMAGE_NAME=some_image_name
# Submit ・・・ ①
gcloud builds submit --tag="gcr.io/${PROJECT_ID}/${IMAGE_NAME}” .
=> 〜中略〜
DONE
----------------------------------------------------------------------------------------------------------------
ID CREATE_TIME DURATION SOURCE IMAGES STATUS
50a5d6bb-fa95-4f81-9285-53d89810c8f8 2019-05-05T04:05:28+00:00 27S gs://some_project_name_cloudbuild/source/1557029126.14-0ddbe2bb56eb403eb31ac9176e580258.tgz gcr.io/some_project_name/some_image_name (+1 more) SUCCESS
こんな感じ。
①の 『.』 は対象をカレントに指定してるのでタイポじゃないです。
Cloud Buildでの使い方
cloudbuild.yml にて、name属性に、作成したイメージのtag名[gcr.io/~]を指定すると、ビルドステップの中で、
Submitとしたイメージをpullして使ってくれます。
steps:
- id: deploy
name: gcr.io/some_project_name/some_image_name
entrypoint: bash
args:
- '-c'
- |
tar cvz ./ | ssh somevps tar zxv -C /home/ubuntu/dist/
今回の場合、tarとsshがステップの中で使えるようになる。
まとめ
Cloud Buildのビルドステップに使うイメージで、gcloud, maven, npm などビルトインで用意してくれてるもの以外が使いたい場合、自分で用意したほうが勝手が良いと思う。
必要最小限の欲しいものだけ突っ込めるし。コミュニティで別途用意してくれてるものもあるけど、用途と合わないことがままあるので、よろしければお試しください。