LoginSignup
1
1

More than 3 years have passed since last update.

Laravel × MySQL × Docker(Laradock) × Heroku

Last updated at Posted at 2019-06-16

今回はLaradockを試用
コンテナの連携周りがMySQLだとバージョンによってで色々調整必要なのと
herokuへのアップもMySQLだと若干調整が必要で詰まるので整理

開発環境

  • Laravel最新バージョン
  • MySQL5.7
  • Docker(Laradock)

本番環境

  • Laravel最新バージョン
  • MySQL5.5.62(herokuのプラグインの関係)
  • Docker使ってない

環境構築

  • リモートにリポジトリ作成する
  • 下記コマンド実行する
cd ~/workspace
git clone リモートリポジトリURL
git clone https://github.com/laradock/laradock.git
cd laradock 
cp env-example .env
sed -ie 's/APP_CODE_PATH_HOST=..\//APP_CODE_PATH_HOST=..\/src/g' .env
sed -ie 's/MYSQL_VERSION=latest/MYSQL_VERSION=5.7/g' .env
rm .enve
docker-compose up -d workspace nginx mysql
docker-compose exec workspace bash
composer create-project laravel/laravel . --prefer-dist
sed -ie 's/DB_HOST=127.0.0.1/DB_HOST=mysql/g' .env
sed -ie 's/DB_DATABASE=homestead/DB_DATABASE=default/g' .env
sed -ie 's/DB_USERNAME=homestead/DB_USERNAME=default/g' .env
rm .enve
exit
docker-compose exec workspace php artisan migrate

# アクセスしてみる
http://127.0.0.1

cd ~/workspace/リポジトリ名
echo 'laradock/' >> .gitignore
git add .
git commit -m 'first commit' 

heroku auth:login
heroku create アプリ名 --buildpack heroku/php
cd ~/workspace/リポジトリ名/laradock
docker-compose exec workspace bash
echo 'web: vendor/bin/heroku-php-apache2 public/' > Procfile

# herokuのプラグインのMySQLのバージョンが5.5で文字の桁制限がありmigrate時に引っ掛かる
sed -ie '5a use Illuminate\\Support\\Facades\\Schema;' app/Providers/AppServiceProvider.php
sed -ie '27d' app/Providers/AppServiceProvider.php
sed -ie '26a \        Schema::defaultStringLength(191);' app/Providers/AppServiceProvider.php
rm app/Providers/AppServiceProvider.phpe
exit

git add .
git commit -m '[chore]setup for heroku' 

cd ~/workspace/リポジトリ名/laradock
docker-compose exec workspace php artisan --no-ansi key:generate --show
cd ~/workspace/リポジトリ名
heroku config:set APP_KEY=キー

cd ~/workspace/リポジトリ名
git subtree push --prefix src/ heroku master

# トップの正常表示を確認
heroku open

# MySQLの場合Herokuの設定画面でクレジットカードの登録が必要
heroku addons:add cleardb

# 出力情報を設定
heroku config | grep CLEARDB_DATABASE_URL
# CLEARDB_DATABASE_URL: mysql://ユーザー名:パスワード@ホスト名:ポート/データベース名
heroku config:set DB_DATABASE=データベース名
heroku config:set DB_HOST=ホスト名
heroku config:set DB_USERNAME=ユーザー名
heroku config:set DB_PASSWORD=パスワード

heroku config:set APP_ENV=heroku
heroku config:set LANG=ja_JP.UTF-8
heroku config:set TZ=Asia/Tokyo

heroku run php artisan migrate

# トップの正常表示を確認
heroku open

メモ

  • LaradockはMySQL8.0とかだと現状失敗する(設定諸々必要)
  • Laradockはデフォルトでcomposeすると不必要にvolume大量生成される
  • 時間があればdocker-compose.ymlを切り出して利用するのが良さそう
  • HerokuのMySQLのバージョンは現状5系
  • 時間があればdocker-compose.ymlを切り出してherokuにもdockerでプッシュするのが良さそう

雑感

Laradockの運用のベストプラクティスがよく分かっていなそう
Laradock色々定義されているのでもう少し適切な設定に把握が必要

1
1
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
1
1