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
にアクセスすると下記画像のようなエラーが出ました。
ちょっとぐぐると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
でも入れるかもしれません。こちらの方が権限が強い?
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
初期設定
/*
| 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名をチェックして修正しましょう。
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel // ← DBの名称が違う可能性が高い
DB_USERNAME=sail
DB_PASSWORD=password