[API構築2] dockerイメージをECRにプッシュした
概要
API作るものと構成 の環境構築のために、CI/CD周りの技術選定 で選んだ技術を用いてGolang appのdockerイメージをコンテナレジストリ(ECR)にアップロードする。
以下に従って作業を進める。(これはプライベートリポジトリ想定だが、公開用のドキュメントは見つからなかったのでこれを参考に読み替えていく)
レジストリとリポジトリ
ECRの使い方を読んでるとリポジトリという言葉が出てくる。ECRは「コンテナレジストリ」だったから今からdockerイメージをアップロードする先ってレジストリじゃないの?
答え
レジストリとリポジトリは別物です。
AWS アカウント
└ レジストリ (1個)
└ リポジトリ (複数)
└ イメージ (複数)
参照:https://qiita.com/shate/items/a24ae736bcd91787801c
ECRに公開リポジトリ作成
以下のように設定する。値のない項目は入力なし。
設定項目 | 設定値 |
---|---|
リポジトリ名 | aichatbot-repository |
設定フォーム
できた。
imagesはまだ何もpushしていないので空。
docker imageをECRへ登録
上記imagesの「プッシュコマンドの表示」ボタンを開くと以下の説明が出た。これに従ってpushしていく。
0. AWS CLIをインストールし、認証情報をセットアップする
以下に従ってAWS CLIを使える状態にする。
1. 認証トークンを取得し、レジストリに対してDockerクライアントを認証する
以下のコマンドを実行する(XXXX部分は~/.aws/configを参照する)
aws ecr-public get-login-password --region us-east-1 --profile AdministratorAccess-XXXX| docker login --username AWS --password-stdin public.ecr.aws/j3a2u6t5
2. Dockerイメージを構築する
以下で構築済みのためスキップ
3. Dockerイメージにタグを付ける
docker tag aichatbot-app public.ecr.aws/j3a2u6t5/aichatbot-repository:latest
4. AWSリポジトリにDockerイメージをプッシュする
docker push public.ecr.aws/j3a2u6t5/aichatbot-repository:latest
できた!
ほほ〜 472MB? ローカルのDockerだと1.2GBなのに?ちゃんとアップロードできているのか不安・・・EKSに配って確認せねば。
感想
AWS CLIの認証周りの設定がめちゃくちゃわかりづらかった。
そもそもIAM Identity Center周りがとても難しい。権限周りを新しく管理する方法らしいが大規模組織を想定していて辛い。そのあたりの流れの説明が非公開リポジトリ用の説明になっていて(ECR用のAWS CLIコマンドが非公開リポジトリ用コマンド(aws ecr)と公開リポジトリ用コマンド(aws ecr-public)で別れている)、頭こんがらがる。
あと致命的なのでaws ecr-public get-login-passwordの説明にオプションが足りてなかった。AWS初心者には辛い・・
Docker Hubにしておけばよかったかも?
いや、ECS使うときにECRに上がっていればきっと楽なはずだから・・・はずだから・・・
追記:
DockerHubでもECSに簡単にアップできるらしい。うーーーん洗濯をミスった感
Discussion