Laravelで新規開発を行う際、Laravel 7.x 以前はcomposerを使う方法が主流でしたが、8.xからはLaravel sailを用いて環境構築ができるようになりました。Laravel sailを使うと、PHPソースだけでなくDocker環境まで一緒に構築することができます!
インストール方法
以下の<APP_NAME>を作成したいアプリケーションの名前に置き換えて実行するだけでインストールは完了です!
curl -s https://laravel.build/<APP_NAME> | bash
設定変更
sailで作成されたアプリケーションはPHP 8.x、MySql 8.x系を使うようになっています。これを、PHP 7.4とMySql 5.7を使うように変更します。
作成されたアプリケーションのルートにあるdocker-compose.yml
を次のように変更します。
# For more information: https://laravel.com/docs/sail
version: '3'
services:
laravel.test:
build:
# context: ./vendor/laravel/sail/runtimes/8.0
context: ./vendor/laravel/sail/runtimes/7.4 # ここを変更
dockerfile: Dockerfile
args:
WWWGROUP: '${WWWGROUP}'
# image: sail-8.0/app
image: sail-7.4/app # ここを変更
ports:
- '${APP_PORT:-80}:80'
environment:
WWWUSER: '${WWWUSER}'
LARAVEL_SAIL: 1
volumes:
- '.:/var/www/html'
networks:
- sail
depends_on:
- mysql
- redis
- selenium
mysql:
# image: 'mysql:8.0'
image: 'mysql:5.7' # ここを変更
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- 'sailmysql:/var/lib/mysql'
networks:
- sail
healthcheck:
test: ["CMD", "mysqladmin", "ping"]
...
sailコマンド一覧
sailコマンドはいわゆるdockerコマンドのラッパーです。いちいちdocker-compose 〇〇
と打つ代わりにsailコマンドをショートカットとして利用できます。sailコマンドの中でよく使うものをまとめました。
なお、標準だといちいち./vendor/bin/sail
と打つ必要がありますが、これではdocker-compose
コマンドよりもめんどくさいので、シェルにエイリアスを貼ることをお勧めします。
alias sail="./vendor/bin/sail"
docker系
sail up # コンテナ起動
sail up -d # バックグラウンドでコンテナ起動
sail down # コンテナ停止
sail shell # コンテナに接続
sail exec <コンテナ名> <コマンド> # docker exec と同じ
Laravel系
sail artisan 〇〇 # artisanコマンドを実行
sail test # testを実行
sail composer ... # composerコマンドを実行
sail php ... # PHPコマンドを実行
その他
環境構築をする時にちょっとハマったことです。mysqlのバージョンを変更した際は、volumeの削除を行わないといけません。自分はMySql 8.x系で環境構築したあと、MySql 5.7系に下げた時にこれにきづかず、少しハマりました。(もしかしたらredisもかも)
$ docker volume ls
...
local <APP_NAME>_sailmysql
local <APP_NAME>_sailredis
$ docker volume rm <APP_NAME>_sailmysql