10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker環境のLaravelアプリをHerokuデプロイ

Last updated at Posted at 2021-03-12

Docker環境でLaravelアプリをデプロイするのが初めてだったので記事にまとめてみました。

はじめるにあたり

Docker環境の作り方やLaravelアプリの作り方はもんしょーさんのブログを参考にしています。

larapic
 ├── README.md
 ├── infra
 │   ├── mysql
 │   ├── nginx
 │   └── php
 ├── docker-compose.yml
 └── laravel
     ├── app
     ├── bootstrap
     ├── config
     ├── ・・・

Herokuにアプリを作成

ブラウザでHerokuを開きログインします。
Newボタンから
7fe3c4fa47ef90b4b5073631c4f544ce.png
App nameにアプリケーション名を入力
(アプリ名) is available
となるように命名します。

Githubと連携

d1c80f9d75445f25aec358b64b7710d8.png

Procfileの作成

larapic
 ├── README.md
 ├── infra
 │   ├── mysql
 │   ├── nginx
 │   └── php
 ├── docker-compose.yml
 └── laravel
     ├── app
     ├── bootstrap
     ├── config
     ├── ・・・
   ├── Procfile(新しく作成)
   ├── ・・・

↑のようにProcfileを作成します。

Procfile
web: vendor/bin/heroku-php-apache2 public/

このようにProcfile内に記述する事でHeroku起動時にapacheサーバーが起動するようです。
ローカルではnginxを使っていたのでnginxにしたかったのですが、いろいろ面倒くさそうだったのでapacheにしました(←apacheに失礼)。

DBはMySQLを利用

ローカルでMySQLを使っていたので本番でもMySQLを使いたいと思います(nginxを断念したので今回は頑張ります)。
HerokuでMySQLを使いたい場合はClearDBを利用します(クレジットカード登録が必要です)。

terminal
% heroku addons:create cleardb:ignite

herokuでMySQL5.7以降を使う場合はJawsDBを利用します。

terminal
% 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の設定

171a3e2b072719c226a6f6fe99d08b34.png
このようにブラウザから入力しても構いませんし
ターミナルからなら↓

terminal
% heroku buildpacks:set https://github.com/timanovsky/subdir-heroku-buildpack
% heroku buildpacks:add heroku/node.js
% heroku buildpacks:add heroku/php

環境変数の設定

Laravelの場合はAPP_KEYの登録が必要です。

terminal
% heroku run "php artisan key:generate --show"
# (出力)base64:◯△□×・・・
% heroku config:set APP_KEY=base64:◯△□×・・・

DBの設定も環境変数に設定します。

terminal
% 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
     ├── ・・・
terminal
% heroku config:set PROJECT_PATH=laravel/

マイグレーション

Herokuにテーブルを作ります。

terminal
% heroku run php artisan migrate

デプロイ

terminal
% git push heroku main

これでデプロイできました。

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?