- Herokuのアプリケーションを作成する
- Deployment Method で Container Resigtry を選択
- Deploy your Docker-based app の通り実行
- Dockerfile の作成
- Docker イメージのビルドとpush
- リリースコマンドの実行
- デプロイできたはずだが...
- 結局
Herokuのアプリケーションを作成する
Deployment Method で Container Resigtry を選択
Deploy your Docker-based app の通り実行
Heroku CLI (Herokuのコマンド) はインストールされているとします。
# CLI から Heroku にログイン heroku login # Heroku の Container Registry にログインする heroku container:login
Dockerfile の作成
今回はこのような Dockerfile を作成した。
FROM phpearth/php:7.3-litespeed COPY ./lightspeed/vhosts /etc/litespeed/vhosts COPY . /var/lib/litespeed/Example # アプリケーションがリクエストを受けるべきポートが # 環境変数 $PORT として Heroku から与えられるので # その $PORT で起動できるようにしておく必要があります # 今回はsedで無理やり LiteSpeed の設定ファイルを書き換えることにした COPY ./litespeed/httpd_config.conf /tmp/httpd_config.conf RUN sed -e "s/8088/${PORT}/g" /tmp/httpd_config.conf > /etc/litespeed/httpd_config.conf
Docker イメージのビルドとpush
下記コマンドを叩くだけで Dockerfile を元にビルド&pushまでやってくれます。
web
は web サーバーのイメージということを指しています(多分。この辺のオプションがよくわからなかった)nicommon-zapping
はアプリ名です
heroku container:push web -a nicommon-zapping
アプリ名とは
これです。
リリースコマンドの実行
heroku container:release web -a nicommon-zapping
デプロイできたはずだが...
アクセスしても 500 エラー。HerokuのActivityのログを見てもデプロイはされている様子。
ログを見ると
No web processes running
と言われてしまっている。
2020-01-02T10:26:34.909079+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=nicommon-zapping.herokuapp.com request_id=ca9c6baa-bc33-4594-8f7b-39a4a3a0e5f0 fwd="126.23.166.85" dyno= connect= service= status=503 bytes= protocol=https
heroku ps:scale web=1
でもやっぱりなんかだめだった
結局
Procfile を書いてデプロイした!PHPとDockerとHerokuのかみ合わせが良くなかった。