Laravel9 Sail インストール


検証環境

  • Windows 10 Pro
  • Docker Desktop for Windows     

1.Docker Desktop for Windowsのインストール

Docker Desktop for Windowsをインストールします。

2. Windows Subsystem for Linux 2(WSL2)がインストールされ、有効になっていることを確認する。

2-1 wslを確認する。

Windows Terminalを使用して、以下のコマンドにより、確認します。

terminal
wsl --status

WSL 2 カーネル ファイルが見つかりません。カーネルを更新または復元するには、'wsl.exe --update' を実行してください。
上記メッセージが表示された場合、カーネルを更新します。

terminal
wsl --update
terminal
wsl -l -v

以下のメッセージが表示された場合は、インストールされていません。

Linux 用 Windows サブシステムには、ディストリビューションがインストールされていません。
ディストリビューションは Microsoft Store にアクセスしてインストールすることができます:
https://aka.ms/wslstore

インストールされていない場合は、wsl2をインストールします。

参考サイト

2-2 wslを最新に更新する。

terminal
wsl --update

2-3 インストールするバージョンをWSL 2とする。

terminal
wsl --setdefault 2

2-4 インストールできるディストリビューションを確認する。

terminal
wsl -l -o
インストールできる有効なディストリビューションの一覧を次に示します。
wsl --install -d <Distro>' を使用してインストールします。

NAME            FRIENDLY NAME
Ubuntu          Ubuntu
Debian          Debian GNU/Linux
kali-linux      Kali Linux Rolling
openSUSE-42     openSUSE Leap 42
SLES-12         SUSE Linux Enterprise Server v12
Ubuntu-16.04    Ubuntu 16.04 LTS
Ubuntu-18.04    Ubuntu 18.04 LTS
Ubuntu-20.04    Ubuntu 20.04 LTS

2-5 ディストリビューションを指定してインストールする。

今回は、Ubuntuを指定します。

terminal
wsl --install -d Ubuntu 

インストールの最後にディストリビューションのユーザーとパスワードの設定があります。
ユーザーとパスワードは忘れないように控えておきます。

2-6 インストールを確認する。

terminal
wsl -l -v

以下のメッセージが表示されれば、インストールが完了しています。

  NAME                   STATE           VERSION
* Ubuntu                 Running         2

3. wsl環境でCurlを実行し、プロジェクトを作成する

3-1 Windowsターミナルを起動します。wslコマンドによりlinux環境に入ります。

terminal
wsl
Welcome to Ubuntu 20.04.2 LTS (GNU/Linux 5.4.72-microsoft-standard-WSL2 x86_64)

3-2 プロジェクトを格納するディレクトリを作成し、ディレクトリを移動します。

linux環境より

terminal
mkdir Laravel
cd Laravel 

3-3 curlコマンドによりプロジェクトを作成します。

今回はexample-appという名前のプロジェクトを作成します。

terminal
curl -s https://laravel.build/example-app | bash
 _                               _
| |                             | |
| |     __ _ _ __ __ ___   _____| |
| |    / _` | '__/ _` \ \ / / _ \ |
| |___| (_| | | | (_| |\ V /  __/ |
|______\__,_|_|  \__,_| \_/ \___|_|

Warning: TTY mode requires /dev/tty to be read/writable.
    Creating a "laravel/laravel" project at "./example-app"
    Installing laravel/laravel (v8.5.16)
      - Downloading laravel/laravel (v8.5.16)
      - Downloading laravel/laravel (v8.5.16)
      - Downloading laravel/laravel (v8.5.16)
      - Installing laravel/laravel (v8.5.16): Extracting archive
    Created project in /opt/example-app
.
.
.

Application ready! Build something amazing.
Sail scaffolding installed successfully.

Please provide your password so we can make some final adjustments to your application's permissions.

[sudo] password for user:

Thank you! We hope you build something incredible. Dive in with: cd example-app && ./vendor/bin/sail up

linuxディストリビューションのパスワード入力を求められますので、2-5で設定したパスワードを入力します。

4. ポート番号を設定する

4-1 example-app/docker-compose.ymlファイルを確認します。

docker-compose.yml
# For more information: https://laravel.com/docs/sail
version: '3'
services:
    laravel.test:
        build:
            context: ./docker/8.0
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.0/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'
        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"]
.
.
.
networks:
    sail:
        driver: bridge
volumes:
    sailmysql:
        driver: local
    sailredis:
        driver: local
    sailmeilisearch:
        driver: local

laravel.testコンテナとmysqlコンテナのポート番号が環境変数となっています。

4-2 .envファイルにポート番号を設定する。

example-app/.envファイルにホストOSの環境に合わせてポート番号を設定します。
今回は、ホストOSのポート番号3306と80が使用中であったため、設定します。
以下の記述をexample-app/.envファイルの最後に設定します。

.env
.
.
.

FORWARD_DB_PORT=3305
APP_PORT=81

5.sail upによりSailを起動する

sail up により起動します。

terminal
cd ./example-app
./vendor/bin/sail up -d
...
Creating example-app_redis_1       ... done
Creating example-app_mysql_1       ... done
Creating example-app_selenium_1    ... done
Creating example-app_mailhog_1     ... done
Creating example-app_meilisearch_1 ... done
Creating example-app_laravel.test_1 ... done

コンテナが起動できたことを確認します。

6.ブラウザよりアクセス

http://localhost:81

画面が表示されます。