AWS ECRにDockerイメージをプッシュする

ECRのメニューを開く

プッシュコマンドの表示を押す

必要なコマンドがずらっと書いてある。イメージ名がひどいのはご愛嬌。 一番上から打っていく。 awsのcredentialsを複数設定している人はAWSプロファイルを適切に指定してあげないといけない。~/.aws/credentialsの中身参照。

自分の場合はrunteqというプロファイル名に設定してクレデンシャル情報を使用するのでAWS_PROFILE=runteqを先頭につけた。

$ AWS_PROFILE=runteq aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 321899771753.dkr.ecr.ap-northeast-1.amazonaws.com
Login Succeeded

→ ログイン成功したとのメッセージが出る。

次にビルドが必要ならビルドする。もうイメージがあるなら不要。

docker build -t runteq-ruby26-3-4-5 .

次にタグをつける

$ AWS_PROFILE=runteq docker tag runteq-ruby26-3-4-5:latest 321899771753.dkr.ecr.ap-northeast-1.amazonaws.com/runteq-ruby26-3-4-5:latest

プッシュする

$ docker push 321899771753.dkr.ecr.ap-northeast-1.amazonaws.com/runteq-ruby26-3-4-5:latest

パーミッションを変える

「ポリシーJSONの編集」から以下を入力。

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Sid": "CodeBuild",
      "Effect": "Allow",
      "Principal": {
        "Service": "codebuild.amazonaws.com"
      },
      "Action": [
        "ecr:BatchCheckLayerAvailability",
        "ecr:BatchGetImage",
        "ecr:GetDownloadUrlForLayer"
      ]
    }
  ]
}

こんな感じ。

以上!!