AWS ECR へCLIでイメージをアップする
Posted:
dockerコンテナをECR repository( 以下、ECR )にアップする
まず、Web UIにログインした後、上部メニューの[ サービス ]->[ Elastic Container Registry ]->[ リポジトリ ]->[ リポジトリの作成 ] からリポジトリを作成する。
リポジトリ名
『リポジトリ名は英字で始まる必要があり、小文字、数字、ハイフン、アンダースコア、スラッシュのみを含めることができます。』というルールがある。 スラッシュがつけられるので、組織名をつけた。Githubのレポジトリ名は大文字を許容するが、ECRは許容しないので小文字に変更する。
example/Hoge_Web -> example/hoge_web
AWS CLIがインストールされていなければインストールして、アカウント設定する
あるいはpipでインストール pip install awscli アカウント設定は上のURLを参考にすること。
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