概要
最近の開発環境はほぼDockerになっています。今回は2020年3月3日にLaravel7がリリースされたこともあり、今まで使っていたPHP系のdocker-composeファイルをlaravel7に合わせて公開しようと思います。
基本のログイン認証機能も追加しています。複雑になるのでメール認証やSNS認証は含んでいません。
目次
Laravel7 docker-composeのgithub公開
開発環境
- PHP7.4
- Laravel7
- MySQL8
- Docker19.03
Github公開
GithubでLaravel7 Docker-composeのソースコードをアップロードしてます。
Laravel docker-composeの設定手順
step
1gitクローン
$ cd laravel7-auth-docker-compose
step
2アプリ起動
step
3web-appの設定
$ docker-compose exec web-app cp .env.example .env
$ docker-compose exec web-app php artisan key:generate
$ docker-compose exec web-app php artisan migrate
必ず最新の状態にしてから上記コマンドを実行してください。
step
4npmの設定
nodeのステータスは [Exit 0]の状態ですが気にしないでください
$ docker-compose run node npm run dev
step
5動作確認
Laravelの認証画面紹介
トップページ画面
会員登録画面
ログイン画面
ログイン認証後画面
ハスワード再発行画面
Laravel7にログイン機能追加方法
今回紹介する記事のGithubにはログイン認証機能はすでについていますがつけるにはどうするか解説します。基本的にはLaravel6と認証方法の導入は変わりません。
step
1migration実行
Laravelをインストールすると最初から入っているmigrationファイルがあるのでこちらを実行することになります。
step
2Laravel/uiのインストール
LaravelにUI機能を追加します。
選択できるUIは以下の通り
- Vue
- React
- Bootstrap
今回は一番人気のあるVueでログイン認証画面を追加します。
step
3npm でWebpack実行
$ docker-compose run node npm run dev
CSSやJSを整形するコマンドです。CSSやJSを変更するとこのコマンドを打つと反映されます。
基本的にはCSSやJSを変更すればすぐに反映されますがたまにCSSやJSが画面で反映しない時このコマンドで変更されます。
Laravel7 Dockerのログ確認
今回のdockerのせっていでは以下のログを出力しています。bugfixには欠かせないのでどこに何が出力されるのか確認しておきましょう。
ログ種類 | ログの場所 |
PHP | laravel7-auth-docker-compose/docker/php/logs |
nginx | laravel7-auth-docker-compose/docker/nginx/logs |
MySQL | laravel7-auth-docker-compose/docker/mysql/logs |
Laravel | laravel7-auth-docker-compose/storage/logs |
ログインセッションをRedis
RedisをDocker-composeの中で起動させていますがセッションにRedisを利用しています。初期設定ではセッションをファイルで持たせているのですが設計上よくないことからRedisにしています。
セッションは基本7種類から選択できます。
- file
- cookie
- database
- apc
- memcached
- redis
- dynamodb
変更方法はSESSION_DRIVERの項目をredis,database,fileのどれかを選択すればいいです
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
SESSION_DRIVER=redis
SESSION_LIFETIME=120
Dokcer環境の作成が難しい
Dockerの設定は非常に複雑です。そのため、初心者が始めても理解できないことがあります。
Dockerを最低限理解するためにはこちらを知っておくことが必要です
- コンテナ
- イメージ
- dockerネットワーク
- Dockerfile
- volume
- ports
- docker-compose
まず、Dockerについて上記のことを知った上でわかりやすいシンプルなdocker-composeの真似をすることをお勧めします。それでDockerについて理解を深めていきましょう
言語によってDockerの設定の違い
今回はLaravel7でのDocker-composeの設定でしたが私のメイン使用言語であるGo言語はまた全く違う設定をすることになります。どの言語に対しても汎用的に作れるようになるにはDockerの知識が必要になります。
ただし、Docker以外でKubernetesというサーバを使う技術が出てきています。kubernetesはもうすぐメインストリームとなるのですがこれを使うにはDockerの知識が必要になるのでDockerを習得することは必須になります。
公開したdocker-composeのメリット
Laravel7を簡単に起動することができます。最初の環境構築は上記のようにコマンドを複数回打ちましたが2回目以降は以下のコマンド一発で起動します。
起動は1コマンド完了となります。
PHP Laravelのデメリット
Laravelはメジャーの言語であるがゆえに開発者が非常に多いです。多いため、常駐案件は安いです。月単価は80万円、90万円するものもありますがほぼ60万円程度です。常駐型フリーランスエンジニアの平均の月単価が70万円なので相場よりも低いことがわかります。
私はPHP大好きなのですが常駐案件ではPHPは避けてます。望める単価が手に入らないためです。
PHPのフレームワークはLaravel 1強になっている
PHPは少し前まではフレームワークが複数あってどのフレームワークがいいのかわかりませんでした。そこでシステムにより様々なフレームワークが乱立していたのですが最近ではLaravelを使うシステム以外をあまり見なくなりました。
以前あったPHPのフレームワークは以下の通りです。
- Laravel
- CakePHP
- zend framework
- Symfony
- Phalcon
- FuelPHP
- CodeIgniter
今後はLaravelで統一してもらったほうが学習コストも少なく済むのでたすかりますね
Laravel7のリリース
laravelは半年に1回程度メジャーアップデートしています。結構頻繁なバージョンアップしているということはユーザーが多いということです。
まとめ
Docker技術は当たり前になってきた時代なので今回のLaravel7をdocker-composeで立ち上げるということはできて当たり前になってくるような気がします。新しい技術はどんどん出てくるので学習は続くように思います。
とはいえ、まだまだできない人も多いと思うのでこちらを使って開発環境を構築する手伝いができればと思います。
またわからないことがあったらこちらにお問合せフォームがあるのでこちらにお問合せください。