Circle CIからHeroku registryにpushする

#circleci

DockerコンテナをHeroku上で実行したい場合、Heroku registryにDockerイメージをpushすることになる。これをCircle CIで行いたい。

Heroku registryの認証はHeroku CLIかdocker loginコマンドで行うことができるが、Heroku CLIのセットアップを"Docker in Docker"イメージ(ベースがalpine)上で行うのはけっこうたいへんなので、以下のようにdocker loginコマンドから行うと良い。

$ docker login -u _ -p $HEROKU_API_KEY registry.heroku.com

$HEROKU_API_KEYheroku auth:tokenコマンドで取得したトークンを環境変数で設定しておく。

.circle/config.ymlはこんな感じになる。

steps:
  # ...
  - deploy:
      name: Push image to Heroku registry
      command: |
        docker login -u _ -p $HEROKU_API_KEY registry.heroku.com
        docker tag myapp registry.heroku.com/$HEROKU_APP/web/myapp
        docker push registry.heroku.com/$HEROKU_APP/web/myapp