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

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

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

リポジトリ名

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

example/Hoge_Web -> example/hoge_web

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

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

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

ECRへのログインコマンドを得る、ECRにログインする。

aws ecr get-login --no-include-email --region ap-northeast-1

下記のような出力が得られるので、それを実行する

docker login -u AWS -p password https://1111111111.dkr.ecr.ap-northeast-1.amazonaws.com

Dockerイメージをビルドする。

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

docker build -t example/hoge_api .

イメージにタグを付ける

docker tag example/hoge_api:latest 1111111111.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": "1111111111",
     "repositoryName": "hoge-web",
     "repositoryArn": "arn:aws:ecr:us-east-1:1111111111:repository/hoge-web",
     "createdAt": 1512382617.0,
     "repositoryUri": "1111111111.dkr.ecr.us-east-1.amazonaws.com/hoge-web"
  }
}

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

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

ECRにDockerイメージをpush

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