Docker環境のLaravelアプリをHerokuデプロイ
Docker環境でLaravelアプリをデプロイするのが初めてだったので記事にまとめてみました。
はじめるにあたり
Docker環境の作り方やLaravelアプリの作り方はもんしょーさんのブログを参考にしています。
- https://simablog.net/docker-laravel-nginx-mysql/
- https://simablog.net/laravel-keiziban/
Herokuに登録し、クレジットカード登録も済んでいる事を前提に進めていきます。
今回のディレクトリ構造です。
larapic
├── README.md
├── infra
│ ├── mysql
│ ├── nginx
│ └── php
├── docker-compose.yml
└── laravel
├── app
├── bootstrap
├── config
├── ・・・
Herokuにアプリを作成
ブラウザでHerokuを開きログインします。
Newボタンから
App nameにアプリケーション名を入力
(アプリ名) is available
となるように命名します。
Githubと連携
Procfileの作成
larapic
├── README.md
├── infra
│ ├── mysql
│ ├── nginx
│ └── php
├── docker-compose.yml
└── laravel
├── app
├── bootstrap
├── config
├── ・・・
├── Procfile(新しく作成)
├── ・・・
larapic
├── README.md
├── infra
│ ├── mysql
│ ├── nginx
│ └── php
├── docker-compose.yml
└── laravel
├── app
├── bootstrap
├── config
├── ・・・
├── Procfile(新しく作成)
├── ・・・
↑のようにProcfileを作成します。
web: vendor/bin/heroku-php-apache2 public/
このようにProcfile内に記述する事でHeroku起動時にapacheサーバーが起動するようです。
ローカルではnginxを使っていたのでnginxにしたかったのですが、いろいろ面倒くさそうだったのでapacheにしました(←apacheに失礼)。
DBはMySQLを利用
ローカルでMySQLを使っていたので本番でもMySQLを使いたいと思います(nginxを断念したので今回は頑張ります)。
HerokuでMySQLを使いたい場合はClearDBを利用します(クレジットカード登録が必要です)。
% heroku addons:create cleardb:ignite
herokuでMySQL5.7以降を使う場合はJawsDBを利用します。
% heroku addons:create jawsdb:kitefin
自分の場合、ClearDBで進めた結果
Mysql2::Error: Specified key was too long; max key length is 767 bytes
このようなエラーが出ました。
解決はこちらの記事を参照→https://qiita.com/reiya018/items/ba8ceaa732edac07e491
結論としてはJawsDBを使用する事で解決します。
Buildpacksの設定
このようにブラウザから入力しても構いませんし
ターミナルからなら↓
% heroku buildpacks:set https://github.com/timanovsky/subdir-heroku-buildpack
% heroku buildpacks:add heroku/node.js
% heroku buildpacks:add heroku/php
環境変数の設定
Laravelの場合はAPP_KEYの登録が必要です。
% heroku run "php artisan key:generate --show"
# (出力)base64:◯△□×・・・
% heroku config:set APP_KEY=base64:◯△□×・・・
DBの設定も環境変数に設定します。
% heroku config:get CLEARDB_URL(もしくはJAWSDB_URL)
# (出力)mysql://◯◯◯◯:△△△△@□□□□/××××?reconnect=true
% heroku config:set DB_CONNECTION=mysql
% heroku config:set DB_USERNAME=◯◯◯◯
% heroku config:set DB_PASSWORD=△△△△
% heroku config:set DB_HOST=□□□□
% heroku config:set DB_DATABASE=××××
% heroku config:set DB_PORT=3306
デプロイさせたいフォルダ(今回の場合はlaravel)を指定して環境変数に設定します。
larapic
├── README.md
├── infra
│ ├── mysql
│ ├── nginx
│ └── php
├── docker-compose.yml
└── laravel ←ここ
├── app
├── bootstrap
├── config
├── ・・・
% heroku config:set PROJECT_PATH=laravel/
マイグレーション
Herokuにテーブルを作ります。
% heroku run php artisan migrate
デプロイ
terminal
% git push heroku main
% git push heroku main
これでデプロイできました。
Author And Source
この問題について(Docker環境のLaravelアプリをHerokuデプロイ), 我々は、より多くの情報をここで見つけました https://qiita.com/Suguhito65/items/3d476994ae852f0fdae4著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .