Help us understand the problem. What is going on with this article?

Heroku Button (app.json) でDocker Containerを使う

More than 1 year has passed since last update.

最近はDockerを使ってアプリケーションの実行環境を作ることが多いです。Heroku Buttonでワンクリックデプロイをする時も、Dockerを使いたい・・・!ものです。

HerokuにおけるDockerを使ったデプロイは、heroku.ymlで定義できます。app.jsonからheroku.ymlを呼び出すことで、Heroku ButtonでもDockerを使ったデプロイが使えます。

最もシンプルなheroku.ymlは以下のようになります。

build:
  docker:
    web: Dockerfile
run:
  web: bundle exec puma -C config/puma.rb
  1. build: アプリケーションのルートにあるDockerfileを使用してwebというイメージを作成。
  2. run: webイメージから作成したコンテナでコマンドを実行。

runがない場合、DockerfileCMDrunの代わりになります(普通はこちらの方が多いと思います)。

setupのセクションで環境変数やアドオン、releaseでデプロイ前に実行する処理などを指定できます。これらは、app.json側でも定義が可能です。app.jsonscriptspostdeployを指定しておけば、Dockerで実行環境を作ったうえでpostdeployが実行できます。将来的にはheroku.ymlに統合されていくかもしれません。

app.jsonでは、heroku.ymlを参照するようstackcontainerを指定します。

{
  "stack": "container" 
}

こうすることでHeroku Button => app.json => heroku.ymlといった形で参照が行われ、Heroku ButtonでもDockerを使ったデプロイが可能になります。

icoxfog417
All my statements are from fun fancies, not a boring story that represents a company that I belonging to.
https://github.com/icoxfog417
tis
創業40年超のSIerです。
https://www.tis.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away