Docker イメージを Google Container Registry に登録

時は遡り、画面が何とか動くようになったので、API連携しようとしたものの、失敗して終了していたこちら。

画面も、色々試せそうになってきたので、とりあえず、APIを公開しようということで、ぬるさく本の「6.3 Docker イメージを Google Container Registry に登録してみよう 」を試すことにします。

GCPプロジェクトの作成

既存のアカウントにプロジェクトを追加します。
プロジェクト名は真似して「nullsuck」、プロジェクトID「nullsuck-xxxxxx」は自動で振られます。

Docker イメージを push

ここで数日を要した・・・

まず、今回はAPI側を公開することにするので、appとなっている部分は全てapiと読み替えて作業します。
そこを間違えなければ(一旦間違えましたが・・・)、docker build はおそらく問題なし。docker tag は、結論としてはそこの問題ではなかったのですが、本でも、GCPドキュメントでも、プロジェクトIDを含めるように書かれているのですが、本の記述が「nullsuck」と書かれていて、若干混乱。「nullsuck-xxxxxx」の方を記述するようにしました。

そして、gcloud docker — push をするのですが、まず、この記述は古いようで、現状では、docker pushでやる形になっています。

が、やってみると、

denied: Token exchange failed for project 'nullsuck-247713'. Caller does not have permission 'storage.buckets.create'. To configure permissions, follow instructions at: https://cloud.google.com/container-registry/docs/access-control

で、権限の問題か、ということで、記載されているドキュメントを見て、バケットを作ってみたりとか、色々試してみていたのですが、最終的な問題点は、現在接続しているプロジェクトが、既存のプロジェクトであり、今回作成したnullsuckプロジェクトではない、ということでした。

gcloud config list

でプロジェクトが確認できます。これはdefault構成だったので、新しい構成を作成。

gcloud config configurations create nullsuck

そして、gcloud initは、対話式で聞いてくれるので、nullsuckプロジェクトを指定することにより、環境が切り替わります。

そこで改めて、docker pushをすると、今度は成功しました。

公開設定が「非公開」になっているのが、本とは異なるので、若干気になる・・・