—– 2017 / 05 / 15 ——-
PackerでECRにpushする時はaws ecr get-loginの工程はいらなかった - hatappiのブログ
動作としてこの記事でも問題ないのですが、よりよい方法があったので上記書き直しました
最近は個人でも会社でもPackerでDocker Imageをbuildしている
以前GCRを使っていたが今回はAWSのECR を扱う
こちらはGCRとは違いすでにPacker側で必要な情報だけ指定すればpushできるようになっている
作業の流れ
まずはECRにリポジトリを登録する
今回はhoge/fuga
とした
次にAWS コマンドラインインターフェイス | AWSからコマンドラインでawsコマンドが使えるようにしておく
# 事前にaws configureをしておく $ aws ecr get-login --region ap-northeast-1 # 日本リージョンのECRを使用する時 docker login -u AWS -p [password] -e none https://11111111.dkr.ecr.ap-northeast-1.amazonaws.com
これでdocker login
コマンドが出力される
userはAWSで固定なのでpasswordをひかえておく
Packer用のjsonファイルは下記のように定義します (必要な部分だけを表示してます)
docker-pushの部分で先程のdocker loginコマンドで表示されたものを使用していくだけです
パスワード情報だけはECR_LOGIN_PASSWORD
という環境変数で使用できるように設定しておきます
{ "variables": { "ecr_registry_url": "https://11111111.dkr.ecr.ap-northeast-1.amazonaws.com", "ecr_repository": "11111111.dkr.ecr.ap-northeast-1.amazonaws.com/hoge/fuga", "ecr_login_password": "{{env `ECR_LOGIN_PASSWORD`}}" }, "builders":[{ "type": "docker", "image": "amazonlinux", "commit": true }], ~~ "post-processors": [ [ { "type": "docker-tag", "repository": "{{user `ecr_repository`}}", "tag": "latest" }, { "type": "docker-push", "login": true, "login_email": "none", "login_username": "AWS", "login_password": "{{user `ecr_login_password`}}", "login_server": "{{user `ecr_registry_url`}}" } ] ] }
これでbuildすればpushされるはずです