LoginSignup
6
2

More than 1 year has passed since last update.

Laravel初心者によるLaravel Sailの導入

Last updated at Posted at 2021-09-11

Laravel Sailという「LaravelをDocker開発環境で動作させるためのツール」を知ったので導入してみることにしました。
この記事は備忘録も兼ねています。

導入理由

docker-compose.yml書かなくていいらしいから。楽そう。

最近職場や自宅でdockerにLaravel環境を構築し勉強を始めました。
しかし、毎回docker-compose.ymlをネットで拾ってきて、勉強のためymlを編集しているので「ぼくのかんがえたさいきょうのdocker-compose.yml」が何かわからない状態になっています。
今回もymlを探していて、その時にLaravel Sailというものを知り、基本的な機能が提供されているので、あれこれ困らずにLaravelをDocker開発環境で構築できそうと思い、導入に至りました。


環境

macOS
(WindowsでもMacでもLaravel Sailの導入は可能です。
自宅環境がmacOSなので、それに準じた記事になっています)


参考サイト

Laravelの公式サイトなので、これが一次ソースになると思います。
https://readouble.com/laravel/8.x/ja/installation.html


導入の流れ

  • Laravelプロジェクトを作成
curl -s "https://laravel.build/example-app" | bash

example-appがプロジェクト名なので、任意の名前に変更しましょう。
下記のようにwith指定をすると、利用するサービスを選択できるようです。
curl -s "https://laravel.build/example-app?with=mysql,redis" | bash
とりあえず指定なしのcurl -s "https://laravel.build/example-app" | bashを入力するとインストール開始。


  • 端末のパスワードの入力

インストールが終わる頃に端末のパスワードを求められるので、自分のパソコンに設定しているパスワードを入力するようです。
https://qiita.com/kai_kou/items/0e773aaf50698dd5a93f

パスワードの入力をし、インストールが終わると下記が表示されました。

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


  • アプリケーションディレクトリに移動してLaravel Sailを起動

インストール終わりに表示されたコマンドを入力。公式ページにも記載されているので、このコマンドで間違いない。

cd example-app && ./vendor/bin/sail up


エラー関係

  • zsh: no such file or directory: ./vendor/bin/sail

cd example-app && ./vendor/bin/sail up で発生
./vendor/bin/sailが無いようです

zsh: no such file or directory: ./vendor/bin/sail


https://teratail.com/questions/347252
この記事を参考にし、以下のように試そうとしました。

$ composer require laravel/sail --dev
$ php artisan sail:install
$ ./vendor/bin/sail up

すると、zsh: command not found: composerが発生


  • zsh: command not found: composer

composerがインストールされていないようなので、下記サイトを参考にインストールを試みます。
https://code-graffiti.com/install-comporser-on-mac/

cd ~
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer

composer -Vでバージョンが出れば成功です。
そして再度example-appフォルダからcomposer require laravel/sail --devから行えばいけました。
php artisan sail:installに何をインストールするか聞かれたので、とりあえずmysqlにしておきました。


エラーが解決したので次に進みます。

./vendor/bin/sail up

をするとコンテナが起動しました。
./vendor/bin/sail up -dの方が個人的に使いやすいです。
docker-compose up -dでも起動できました。
./vendor/bin/sail downがコンテナの停止コマンドです。

http://localhostにブラウザでアクセスすると、Laravelの初期画面が表示され・・・


エラー関係

ませんでした。
http://localhostにアクセスすると下記画像のようなエラーが出ました。
スクリーンショット 2021-09-11 19.22.25.png
ちょっとぐぐるとkeyがないということで、Generate App key(赤枠で囲ったところ)を押してみると、今度はreflash showになったので、そこをクリックすると無事にLaravelが立ち上がりました。



エイリアスの作成

下記のように打って起動できるようにします。

% cd example-app
% sail up -d
  • vimの編集
% vim ~/.zshrc
  • 一番下に追記
% alias sail='bash vendor/bin/sail'
  • 設定を反映
% source ~/.zshrc


慣れれば2〜3コマンドで立ち上がりそうなので、爆速っぽいです。


phpmyadminの設定

サイトを参考にし下記を追記。
https://qiita.com/kai_kou/items/0e773aaf50698dd5a93f
https://stackoverflow.com/questions/66195113/how-to-add-phpmyadmin-to-laravel-8-sail-docker-compose-yml

ユーザ: sail
パス : password
かと思います。

ユーザ: root
パス : password
でも入れるかもしれません。こちらの方が権限が強い?

docker-compose.yml

    laravel.test:
  (略)
    mysql:
  (略)

    // laravel.testやmysqlと同じ深さで追記
    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 shell


初期設定

config/app.php
    /*
    | Application Timezone
    */
    'timezone' => 'Asia/Tokyo', // ← UTCをAsia/Tokyoに変更


    /*
    | Application Locale Configuration
    */
    'locale' => 'ja', // ← enをjaに変更


メモ: Node.jsとnpmのインストール

npmとは、「Node Package Manager」の略で、Node.jsのパッケージを管理するためのシステム。
下記コマンドを打つとバージョンが表示されたので、既にインストールされていました。

sail node -v
sail npm -v


新しいプロジェクトを作成する時

最初のLaravel Sailの導入はエラーが色々でました。
しかし、一度導入してしまえば設定は終わっているので、下記のコマンドでスムーズに立ち上がります。

% curl -s "https://laravel.build/example-app" | bash
% cd simple-memo-app
$ sail up -d

Laravel
http://localhost/

phpmyadmin
http://localhost:8080
ユーザ: sail
パス : password

ユーザ: root
パス : password

[メモ]
php artisan migrateでエラーSQLSTATE[HY000] [1044] Access denied forが出た場合は、envファイルをチェック。
phpmyadminに入り、DB名をチェックして修正しましょう。

/.env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel // ← DBの名称が違う可能性が高い
DB_USERNAME=sail
DB_PASSWORD=password
6
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2