はじめに
自己学習用にLaravelを使ったCRUD処理のあるアプリ作成のため、ローカルの環境構築してみました。今回は公式ドキュメントに記載のある、Laravel Sailを利用してみました。その際の作業ログ的な記事となります。
環境
- Windows11
- WSL2
- ubuntu
- Docker Desctop
参考にした記事
- Laradock?もう使わないよ?? – Laravel Sail を使ってみた
- Laravel 8.x インストール:公式ドキュメント
- Laravel 8.x Laravel Sail:公式ドキュメント
- 【Linux】エイリアスの設定方法
- エイリアス 【alias】:IT用語辞典
ありがとうございます!
Laravel Sailとは
公式ドキュメントより
LaravelはDockerを利用する、Laravelプロジェクトを実行できる組み込みソルーションであるSailを提供しています。
Laravel Sailは、LaravelのデフォルトのDocker構成と、操作するための軽量のコマンドラインインターフェイスです。 Sailは、Dockerの経験がなくても、PHP、MySQL、Redisを使用してLaravelアプリケーションを構築するために良い出発点を提供しています。
公式ドキュメントということで安心感がありますし、簡単そうな気がします、、、!
Laravelプロジェクトを作成する
ターミナル(ubuntu)で以下のコマンドを実行します。
curl -s https://laravel.build/example-app | bash
※example.appの部分は任意のプロジェクト(ディレクトリ)名にできます。
少し時間がかかります。
Laravel Sailを起動する
プロジェクト作成後、作成したディレクトリに移動します。
cd example-app
その後Laravel Sailを起動します。
./vendor/bin/sail up
初回は数分かかります。
構築完了後http://localhost
を確認するとLaravel起動画面が確認できました!
おまけ
Laravel Sailを起動するコマンドのエイリアスを登録する
エイリアスとは
エイリアスとは、偽名、別名、通称などの意味を持つ英単語。ITの分野では、ある対象や実体を、複数の異なるシンボルや識別子で同じように参照できるする仕組みを指す。別名
長いコマンドや複数のコマンドを省略したコマンドで同じように実行できるようにするもの、みたいです。
設定方法
vendor/bin/sail
と入力する代わりに、sail
と入力するだけでSailコマンドを実行できるように設定します。
まず、以下のコマンドを実行して.bashrc
を開きます。
vi ~/.bashrc
.bashrc
ファイルに以下の内容を追加します。
# Laravel Sail Execute
alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'
※vim コマンド集 :Qiita
↑vimのコマンド操作に慣れてないため、こちらの記事を参考にvimファイルを編集しました。
ubuntuを再起動し、作成したディレクトリに移動してからsail up
と実行するとLaravel Sailが起動するようになりました。
データベースをMySQLからPostgresへ変更する
Laravel SailのデフォルトのデータベースはMySQLですが、今回はPostgresを使用したかったため、下記記事を参考にして変更しました。
Laravel8 を標準装備の Sail + Dockerで開発環境を作る際にMySQLを使わずPostgresに変更してみる
docker-compose.ymlと.envファイルの変更でできました!
SQLSTATE[08006] [7] could not translate host name "postgres" to address: Temporary failure in name resolution
.envのDB_HOSTをpostgresへ変更後、php artisan migrate
をしたところ、上記のエラーが発生してしまいました。
解決策
①
Laravel SailでMySQLからPostgresに変更する方法
↑記事を参考に、sail artisan sail:install --with=pgsql
を実行し、下記のようにDocker-compose.ymlの修正を行いました。
pgsql:
image: 'postgres:13'
ports:
- '${FORWARD_DB_PORT:-5432}:5432'
environment:
PGPASSWORD: '${DB_PASSWORD:-secret}'
POSTGRES_DB: '${DB_DATABASE}'
POSTGRES_USER: '${DB_USERNAME}'
POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}'
volumes:
- 'sail-pgsql:/var/lib/postgresql/data'
networks:
- sail
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "${DB_DATABASE}", "-U", "${DB_USERNAME}"]
これだけではマイグレーションできませんでした、、、。
②
.envのDB_HOSTをpgsqlへ変更しました。
※sailの場合、postgresではうまくいかないみたいです、、、
DB_HOST=pgsql
マイグレーションできました!
MailHogを確認する
localhost:8025
で確認できます!
(.envファイルを確認すると、MAIL_PORT=1025
と記載があったので、localhost:1025
を見てみましたが、このページは動作してませんとのことで焦りました)
おわりに
初めて自力で最初から環境構築できました!自分で調べながら作業することの積み重ねが大切だと感じました。これから今回構築した環境を使ってアプリ作りをし、また記事を書いていきたいと思います。