この記事は シーエー・アドバンス Advent Calendar 2021 2日目の記事です。
前回の記事は @toubaruさんの 「macOS Catalina に Frida をインストールする」 でした。
明日の記事は @Jeyさんです。
普段、脆弱性診断のクロール業務をしています。
開発研修として、Laravelでの開発があり、今回はDockerの知識があまりない人でも
Laravel公式が出しているsailというものを使って環境構築できるようにまとめてみました。
Laravel Sailでは現時点では未サポートのPhpMyAdminを研修では使ったりもするため(Dockerの知識がちょっと必要)追加で記載しています。
#概要
Laravel公式から出ているsailが、最近Dockerの知識がない初心者でも環境構築が楽にできる
とLaravelやPHP勉強会で耳にしたので気になったので試してみました。
また、社内研修で素のPHPでサイト作成後、Laravelでのサイト作成もあるため、
今後Dockerの知識がない人でもサクッと簡単に環境構築できるかと思い、試してことをまとめてみました。
#動作検証環境
- Mac Book Pro16(Intel)
- OS catalina(バージョン10.15.7)
- Docker Desktop(バージョン3.5.2)
#準備
Docker Desktop導入がまだの人はインストールしてください。
#これまでのLaravel導入手段まとめ
これまで、Laravel導入手段はLaravel非公式のもので様々な方法がありました。
PHPバージョン8以降から、Laravel公式からLaravel Sailが登場し、手軽にLaradockの環境構築ができるようになりました。
-
Docker系
-
-
curl
コマンドでLaradock環境を構築できる。- PHPのバージョンはデフォルトだと
8.0
-
現在Sailが使用できるPHPバージョンは、
8.1
、8.0
、7.4
の3つ。
- PHPのバージョンはデフォルトだと
-
curl
コマンドにwith -mysql
等、引数を追加することでサービスの指定もできる。- 指定可能なサービスは下記9つ。
- mysql
- pgsql
- mariadb
- redis
- memcached
- meilisearch
- minio
- selenium
- mailhog
- 指定可能なサービスは下記9つ。
- サービス指定しない場合のデフォルトで導入されるサービスは下記5つ
- mysql
- redis
- meilisearch
- mailhog
- selenium
-
-
- Laradock - github
- 全部入りのLaravel Docker環境
- Laravel非公式
- 設定ファイルをいじることで独自の好きな環境を作れる
-
- PHP バージョンは7.4で止まってそう
- PHP 7.4
- MySQL 5.7
- Redis (latest)
- NodeJS (latest), with NPM, Yarn, & Gulp
-
docker
コマンドやdocker-compose
コマンドも使えるけれど、vesselコマンドでも動くらしい。参考:VesselでLaravelのDocker環境をサクッと作る - Qiita記事
- PHP バージョンは7.4で止まってそう
-
- ucanさんという方が作成したLaravel開発環境
- 最低限のLaravel開発環境が作成できる
- Qiitaに手順の解説あり
-
-
ローカル系
Laravel Sailで環境構築
1.Docker Desktop導入が完了したら、ターミナルを開き、作成したい任意の場所に移動します。
(今回はデスクトップに作成します。$の後からコマンド入力してください)
$ cd /Users/[自分のPC名]/Desktop
確認方法:
$ pwd
#`pwd`コマンド実施後、下記のように返ってきたらOK。
/Users/[自分のPC名]/Desktop
[自分のPC名] Desktop
2.下記curl
コマンドを叩く。今回はexample-app
という名前で作成してます。
$ curl -s "https://laravel.build/example-app" | bash
3.example-app
に移動し、下記コマンドでSailの開始する
$ cd example-app
$ ./vendor/bin/sail up -d
4.Sail開始後、localhostにアクセスし、Laravelの画面が表示されたらLaravel導入成功。
5.下記コマンドで一旦、Sail停止します。
$ ./vendor/bin/sail stop
※Bashエイリアスの設定
上記コマンドを短縮したい場合は、エイリアス設定しておくとsail up
、sail stop
とsail
コマンドで操作ができる。
$ alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
Docker起動の度に、上記エイリアス設定しないとSail
コマンドが使えないので注意。
Dockerで永続的にエイリアス設定する方法をご存知の方がいれば、コメントで教えていただけると嬉しいです。
6.初回起動時に.env.example
ファイルが作成されているかと思うので、自分の環境様様に.env
としてコピーします
$ .env.example .env
7.上記⑥でコピーした.env
ファイルの5行目(APP_URL=
)の下にLaravelのポート番号を追記する
APP_PORT=8777
8.上記手順③、④を再度実施し、Laravel sail起動後、http://localhost:8777/
へアクセスし、Laravelの画面が表示されたら設定完了です。
#phpMyAndminを追加する
Sailは単なるDockerであるため、Sailに関するほぼすべてを自由にカスタマイズできます。
- 公式でPhpMyAndminはサポートしてない。
- 公式に上記の記載があったので、通常のDockerでPhpMyAdminを使用する時と同じ様に
docker-compose.yml
ファイルに追記していきます。
- Sailを起動している場合、
./vendor/bin/sail stop
かsail stop
で一旦Sailを停止します。 -
docker-compose.yml
のmysqlの下あたりにPhpMyAdminを追記する。(インデント等も同じになるよう記載してください)
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql:mysql
ports:
- 8888:80
environment:
MYSQL_USERNAME: '${DB_USERNAME}'
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
PMA_HOST: mysql
networks:
- sail
3.PhpMyAdminでログインする際に、データベースのログイン情報が必要なので、データベース情報を追記します。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=8888
# []内は自分が作成したデータベース名を記述する
DB_DATABASE=[example-app]
# []内は自分が作成したデータベースのユーザー名を入力する
DB_USERNAME=[username]
# []内は自分が作成したUserのパスワード入力する
DB_PASSWORD=[password]
4.http://localhost:8888/index.php
にアクセスし、データベースのログイン情報を入力しPhpMyAdminにログインできれば完了です。
最終確認
最後にphpMyAndminとLaravel画面が表示されるか確認し、それぞれのページが表示されれば環境構築終了。
- Laravel
- phpMyAndmin
この後のLaravelを使ってのサイト作成は通常のLaravelと基本的には同じです。
BurpSuite等のプロキシツールでLaravelアプリの通信を取得したい場合
上記、Laravelで設定したlocalhostのポート番号8777
で通信取得できます。
まとめ
Laravel公式がサポートしている範囲内であれば、Sailを使ったLaravelの環境構築を爆速で行えるということが分かりました。
Intel Macを持っている初心者の人であれば、curlコマンドを叩くだけでLaravelの環境構築ができてしまうので
Laravelの環境構築でつまずくことは、大分減りそうかな。と思いました。
公式がサポートしていないサービスを使いたい等、自分でSailに追加してオリジナルで環境構築を行う場合は、
.ymlファイルやDB作成時の記載方法等のDocker知識がないと厳しそうかなと感じました。
来年1月にはLTSバージョンが出るらしいので、その時にまた適宜修正したいと考えています。