今回は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色々定義されているのでもう少し適切な設定に把握が必要