AWS ECR へCLIでイメージをアップする

dockerコンテナをECR repository( 以下、ECR )にアップする

まず、Web UIにログインした後、上部メニューの[ サービス ]->[ Elastic Container Registry ]->[ リポジトリ ]->[ リポジトリの作成 ] からリポジトリを作成する。

リポジトリ名

『リポジトリ名は英字で始まる必要があり、小文字、数字、ハイフン、アンダースコア、スラッシュのみを含めることができます。』というルールがある。 スラッシュがつけられるので、組織名をつけた。Githubのレポジトリ名は大文字を許容するが、ECRは許容しないので小文字に変更する。

example/Hoge_Web -> example/hoge_web

AWS CLIがインストールされていなければインストールして、アカウント設定する

ECRへのアクセス設定をする

( これはリポジトリ作成時に説明が表示されます。一度、空のリポジトリを作成すると流れがより良く分かるかもしれません )

ECRにログインする

aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com

上記コマンドはそのまま実行できる形なので、出力を別途実行する必要はありません。

Dockerイメージをビルドする

カレントディレクトリにあるDockerfileを用いてイメージ作成。Dockerfileにある場所に移動してから docker buildする。

docker build -t example/hoge_api .

イメージにタグを付ける

docker tag example/hoge_api:latest 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/example/hoge_api:latest

Dockerレポジトリを作成

aws ecr create-repository --region us-east-1 --repository-name hoge

実行例。 これは2017/12に出たばかりの fargateモードで検証するため、バージニア北部リージョンにレポジトリを作成している

❯ aws ecr create-repository --region us-east-1 --repository-name hoge-web

下記の『repositoryUrl』が重要。イメージに対する『タグ付け』に使用する

{
  "repository": {
     "registryId": "123456789012",
     "repositoryName": "hoge-web",
     "repositoryArn": "arn:aws:ecr:us-east-1:123456789012:repository/hoge-web",
     "createdAt": 1512382617.0,
     "repositoryUri": "123456789012.dkr.ecr.us-east-1.amazonaws.com/hoge-web"
  }
}

repositoryUriを用いてタグ付けする。

 docker tag hoge_web:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/hoge-web

ECRにDockerイメージをpush

docker push 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/example/hoge_api:latest
User
CloudFront
ALB
EC2
RDS