このあいだ、ようやくLaravel8で開発するチャンスが。
これまではLTSのLaravel6ばかりで、なかなか新しいバージョンが選ばれなかったのですが、次に来る、Laravel9(おそらくLTS)への準備としては見識を深めたいところ。
いろいろ開発環境を構築するにあたって、インストールから変わっていたので記録を残します。
Contents
まずは環境構築
従来のやり方でも問題ないのですが、折角なので噂のSailを使ってみたい。
なので、まず、Dockerが開発PCにインストールされている必要があります。
入っていない方は、ここからインストール♪
Dockerとは
詳しくはググって下さい(丸投げwww)
- ローカルPC内に、Dockerコンテナ単位に仮想サーバを立ち上げる。
- 仮想サーバをローカルPCのポートにマッピングして利用する。
- 複数のコンテナは、docker-compose を使ってまとめて管理すると幸せ。
こんな感じのものです。
今回のLaravel8+Sailの場合、デフォルトでこれらのコンテナ(仮想サーバ)が自動的に立ち上がります。
コンテナ名 | 内容 | ポート |
---|---|---|
laravel.test | Laravel8とphp(デフォルトでv8.0)、web環境がまとまったコンテナ。 | 80 |
mysql | 言わずと知れた、mysql(v8.0)のコンテナ。 | 3306 |
redis | NoSQL、Redisのコンテナ。個人的に、あまりNoSQLは使わない。 | 6379 |
meilisearch | 検索API、MeiliSearchのコンテナ。まったく触れたことは無し。 | 7700 |
mailhog | メール送信がローカルでテストできる。便利なMailHogコンテナ。 | 1025 8025 |
selenium | スクレイピング、Seleniumのコンテナ。検証を自動化するのに便利なのか? | – |
なので大元の開発環境には、Dockerさえ入っていれば、phpすら無くても大丈夫という。スグレモノです。
Laravel8のインストール
curl -s "https://laravel.build/hogehoge" | bash
hogehoge は任意のプロジェクト名に変えてもらえれば。
このプロジェクト名でディレクトリが作られ、その中にLaravel8が初期インストールされます。
Sailから各コンテナを起動
cd hogehoge
./vendor/bin/sail up
プロジェクトのディレクトリに移動し、sail up コマンドでコンテナが立ち上がります。
(初回だけDockerコンテナを構築するのに時間がかかります)
これが終われば、
http://localhost/
でLaravelにアクセスできるはず。です。
Sailコマンドも-dオプションで、バックグラウンド起動します。
./vendor/bin/sail up -d
その場合の終了はこちら。
./vendor/bin/sail down
ほんの一瞬で、開発環境がまるっと立ち上がりましたよ。
MySqlへのアクセス
./vendor/bin/sail mysql
でCLIでアクセスできますが、DB管理ツールなんかからもアクセスは可能です。
.envファイルを覗いてみると、
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=hogehoge
DB_USERNAME=sail
DB_PASSWORD=password
となっていると思いますので、普通にlocalhost(127.0.0.1)の3306ポート、ユーザー名 [ sail ]、パスワード [ password ] を使ってアクセス可能です。
ちなみに、ユーザー名だけを [ root ] に変えれば管理者権限でアクセスも出来ます。
このあたり、ググっても違った情報ばかりでハマりました。。結局、docker-compose.yml の設定内容から読み解きました。
phpMyAdminも入るよ
みんな大好き、phpMyAdminのコンテナもセットできます。
docker-compose.yml ファイルに以下を追加です。
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql:mysql
ports:
- 8080:80
environment:
MYSQL_USERNAME: '${DB_USERNAME}'
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
PMA_HOST: mysql
networks:
- sail
これで Sailを立ち上げ直せば、以下からアクセス可能です。
http://localhost:8080
Sailコマンドを短縮
./vendor/bin/sail
いちいち叩くと長いので、
vi ~/.bash_profile
ターミナルの環境設定ファイルに
alias sail="./vendor/bin/sail"
こんな感じで、aliasを登録しておくと便利です。
その他のSailコマンド
phpをコマンドで叩く場合
sail php
DBのマイグレーションやコントローラーの追加などのartisanも、
sail artisan
composerでのモジュール追加も
sail composer
が使えます。
いたれりつくせりですね^^むっちゃ凄い。
さぁデプロイだ
docker-compose.ymlに環境がまとまってますので、サーバレスモジュールなどを追加すれば、AWS Lambdaなどにもサクッとデプロイできるみたいですね。こっちは未検証です。
このようなコンテナを使ったデプロイは初期作業も少なく楽なのですが……結局、コンテナ周りの学習コストや運用コストが増えるのと、以前、Kubernetes環境での運用で痛い目にあった経験があり……個人的には、超後ろ向き。
ミニマムのサーバ構成の枯れた技術で本番環境を用意するのが好みです。
今回も標準で、[ .gitignore ] ファイルまで組み込まれてますので、結局GitHub経由でLAMPサーバにデプロイしました。コンテナは使わずの運用です(笑)
その他、開発環境で必要になった、xdebug の導入についてはボリュームもあるので別記事にまとめます。