##1. レポジトリの作成
オレンジ色の「レポジトリを作成」をクリック
(1) リポジトリ名
**▼以下はデフォルトのまま**
(2) プライベート (イメージを公開したい場合はパブリックにする)
(3) タグのイミュータビリティ: 無効
(4) イメージスキャンの設定: 無効
(5) 暗号化設定: 無効
右下のオレンジ枠の「リポジトリを作成」をクリックすれば完成。たったこれだけ。
###タグのイミュータビリティとは?
イメージの上書き防止機能。
dockerでイメージを作成する時は、イメージ名:タグ名
で、名前をつける。タグ名にはバージョンを指定することが一般的。
タグのイミュータビリティ機能を有効にすると、タグ名が同じ場合に上書きを防いでくれる。
レポジトリ作成後は変更できない。
###イメージスキャンの設定とは?
脆弱性を確認する機能。
イメージスキャンを有効にすると、イメージがECRレポジトリにプッシュされた時に、イメージの中身をスキャンし、欠陥がないか確認してくれる。
イメージスキャンの結果はAmazon EventBridgeに保存される。
無効にしている場合は、手動でスキャンを実行できる。
###暗号化設定とは?
暗号化方式の指定。
デフォルトではAES-256で暗号化されているが、KMS暗号化を有効にすると、AWS Key Management Service (KMS)で指定した方法で暗号化することができる。
2020/7/29から使えるようになった比較的新しい機能。
##2. イメージのビルド docker-compose.ymlファイルとDockerfileを用意して、buildコマンドを実行する。
・docker-compose build サービス名
ECRにプッシュする前にイメージ名を変更する必要があるため、イメージ名は識別できるものにしておく。
docker-compose.ymlの中にimageディレクティブを記述する。
・image: <イメージ名>:<タグ名>
###デバッグしてからビルドする関数定義 本番環境のイメージ作成など、注意が必要な場合は、
(1)ローカルに未コミットがないか、(2)リモートレポジトリとローカルレポジトリのブランチの間に差分がないかを確認してから、イメージを作成するとうっかりミスを減らせる。
詳細はgitのハッシュ値を使ってイメージビルド前のデバッグ処理を作成する方法を参照。
##3. イメージをプッシュする 作成したレポジトリにイメージをプッシュするには、`docker push`コマンドを使う。
ECRへのイメージプッシュの処理手順は以下になる。
- docker経由でawsへのログイン
- docker tagでイメージ名を変更
- docker pushでイメージを送信
- ECR上でイメージが追加されたか確認
詳細は、ECRにログインし、レポジトリにイメージをプッシュするエイリアスコマンドの作成方法を参照。
###ポイント1
docker push
する際に、プッシュ先のレポジトリはイメージ名で指定する。
イメージ名は以下のようにする必要がある。
・<ホスト名>/<レポジトリ名>:<タグ名>
イメージ名を変更するために、docker tag
コマンドを使う。
###ポイント2
イメージは新たにビルドする必要がある。
元々あるイメージを再度プッシュしようとしても、変更がない場合はプッシュは行われない。
プッシュ後にECRに行って、イメージタグが追加されているか確認すること。
ECR上でプッシュした日時でイメージが確認できればOK。