Laravel Sailで環境構築

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です