- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2023-08-06T01:58:34+00:00","default:wikiadmin","wikiadmin")
#author("2024-07-17T09:58:29+00:00","default:wikiadmin","wikiadmin")
-Docker Repository 500Mまで無料
#contents
*参考ページ [#y94a3f2b]
https://dev.classmethod.jp/articles/push-docker-image-to-ecr-with-cli/
https://y-ohgi.com/introduction-terraform/laravel/ecr/
*ECR操作 aws cli [#gf47fc9b]
|リポジトリのimage一覧|aws ecr list-images --repository-name myspring|
**ECR 属性 [#kca87092]
|タグのイミュータビリティ|同じタグ名で上書きできなくする場合はtrue|
|プッシュ時にスキャン|PUSH時に脆弱性チェックをしてくれる。無料らしいのでtrueにすべし|
**ECR 作成 [#t5a6bee3]
-IAMにAmazonEC2ContainerRegistryFullAccessを付与して実験
- --region付けないとエラーになったがprofileつければ回避できるのでprofile指定が推奨
aws ecr create-repository --repository-name test-ecr --region=ap-northeast-1
aws ecr describe-repositories --query 'repositories[].repositoryName'
**ECRログイン [#y138ea58]
-まずはログイン情報を表示させるため以下のコマンド実施
export AWS_ACCOUNT_ID=`aws sts get-caller-identity | jq -r '.Account'`
export AWS_REGION=ap-northeast-1
aws ecr get-login-password --region ${AWS_REGION}
# profile xxx を使ってログインパスワード表示。AWSのログインコマンドはBrokenPipeで失敗する。
aws ecr get-login-password --profile xxx
# どこにログインしているのか確認
jq -r < "${HOME}/.docker/config.json" '.auths | keys[]'
-上記のコマンドでパスワードがでる。ログインする。
docker login -u AWS -p 上記の出力 https://リポジトリID.dkr.ecr.ap-northeast-1.amazonaws.com
-一度にやるなら以下のコマンドで
-一度にやるなら以下のコマンドで(失敗する)
aws ecr get-login-password --region ${AWS_REGION} | docker login --username AWS --password-stdin ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_REGION}.amazonaws.com
*試しにDocker imageを作成してupload [#ta392479]
-phpinfo.phpを用意する
<%php phpinfo(); %>
-Dockerfile作成
FROM php:7-apache
COPY phpinfo.php /var/www/html
-試しに実行
docker run -p 80:80 -e hoge=hogehoge -e fuga=mogefuga --name myphp myphp
*ログイン [#n9eda05f]
aws ecr get-login-password --profile xxxx
-パスワードが出てくる。
*タグ付けしてpush [#pbfaa941]
-xxxはAWSアカウントIDで数値。リポジトリ名称は事前に作成したリポジトリ名称に置き換える
docker tag myphp:latest xxx.dkr.ecr.ap-northeast-1.amazonaws.com/test-ecr:latest
docker push 699567825067.dkr.ecr.ap-northeast-1.amazonaws.com/test-ecr:latest
*タグ付与 [#fb80d61f]
# イメージのマニフェストを取得
MANIFEST=$(aws ecr batch-get-image --repository-name XXXX --image-ids imageTag=1.1 --output text --query images[].imageManifest)
# 新しいタグを付与
aws ecr put-image --repository-name XXXX --image-tag new-tag --image-manifest "$MANIFEST"
*タグlatest削除 [#ydbd747a]
aws ecr batch-delete-image --repository-name XXXX --image-ids imageTag=latest