デプロイする流れ
1 Heroku上にHerokuアプリを作成する。(URLが付与される)
2 Herokuのコンテナレジストリ(Heroku上のDockerイメージ置き場)にDockerイメージをプッシュする。
3 Dockerイメージをアプリへリリース
4 デプロイしたアプリへブラウザでアクセス
事前にアカウントを作成し、クレジットカードを登録しておく。(クレジットカードを登録しないと公開できない。)
heroku cli のインストール(mac)
brew install heroku/brew/heroku
herokuへログイン
heroku login
自動起動するブラウザからログインする。
コンテナレジストリにログイン
heroku container:login
アプリに移動
※herokuはアプリのルートディレクトリ直下のdockerfileを参照する仕様。そのため、dockerfileが違う場所にある場合は、複製してルート直下にheroku用のdockerfileを配置する必要がある。
herokuでapacheを動かそうとするとエラーとなるので一部対処が必要。
エラー対処設定ファイルを作成
sed -i "s/Listen 80/Listen ${PORT:-80}/g" /etc/apache2/ports.conf
rm /etc/apache2/mods-enabled/mpm_event.conf
rm /etc/apache2/mods-enabled/mpm_event.load
apache2-foreground "$@"
dockerfileでコンテナへコピーする記述と実行コマンドを追記
COPY ./docker/app/run-apache2.sh /usr/local/bin/
CMD [ "run-apache2.sh" ]
エラー対処設定ファイルに実行権限を付与する
chmod +x run-apache2.sh
herokuアプリを作成
heroku create
データーベースと連携させるためアドオンをインストールする。(ignite => 無料)
heroku addons:create cleardb:ignite
cleardbの接続設定を確認する。
heroku config | grep CLEARDB_DATABASE_URL
mysql:// ユーザー名 : パスワード @ ホスト名 /データーベース名 ?
環境変数の設定
heroku config:add DB_USERNAME=ユーザー名
heroku config:add DB_PASSWORD=パスワード
heroku config:add DB_DB_HOST='ホスト名' (.が入っているので'で括る)
heroku config:add DB_DATABASE=ユーザー名
確認
heroku config
テーブルの作成
heroku run "テーブルの作成関数が記載されたファイル"
レジストリコンテナへプッシュ
heroku container:push web
レジストリコンテナへリリース
heroku container:release web
ブラウザ上からアクセス
heroku open
※複数のアプリを登録していた場合
heroku apps:info
アプリケーション名を調べてコマンドの末尾に
--app アプリ名
を付与する。
herokuアプリを削除する方法
heroku apps:destroy --app アプリ名 -confirm アプリ名
heroku ログの確認(--tail で監視)
heroku logs --tail
修正を反映させる。
ローカルファイルを修正。
レジストリコンテナへプッシュ
heroku container:push web
レジストリコンテナへリリース
heroku container:release web