Docke+Laravel8+Breeze環境作成
前置き
あぁー、JetStream無しでSPA作りてぇなぁと思っていたらBreezeなる認証パッケージが出ていたので触ってみます。
頭が悪い自分はきっと直ぐに忘れるだろうから細かめに自分用に備忘録として残しときます。
この記事では環境構築までを行い、それ以降はまた気が向いたら書こうかなって思います。
Docker環境作成
ディレクトリ構成
下記の構成でディレクトリとファイルを作ってきます。
トップディレクトリ名はプロジェクト名の「lara_base」で作ります。
以下各ファイルの説明
.gitkeepと.gitignore
空のディレクトリはコミットできないので、その対策として作成しています。
.gitkeep中身は空です。ただ存在しているだけです。
.gitignoreに下記記載しておくとdbディレクトリをGitで管理できるようになります。
/db/data
/db/my.cnf
/db/sql
!.gitkeep
docker-compose.yml
適当にDocker環境の設定を書いていきます。
今回はLaravelを動かすWebコンテナとMySQLを動かすDBコンテナという2構成です。
version: '3'
services:
lara_base_web:
build: .
container_name: lara_base_web
volumes:
- ./web:/var/www/html/lara_base
ports:
- 8081:8081
- 3000:3000
lara_base_db:
image: mariadb:latest
container_name: lara_base_db
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: lara_base
MYSQL_USER: laravel
MYSQL_PASSWORD: secret
TZ: Asia/Tokyoa
volumes:
- ./db/data:/var/lib/mysql
- ./db/my.cnf:/etc/mysql/conf.d/my.cnf
- ./db/sql:/docker-entrypoint-initdb.d
ports:
- 3306:3306
Dockerfile
作成する環境をつらつらと書いてゆきます。
新しいもの好きなのでPHP8で作成。Composerもここで入れています。
FROM php:8.0-fpm
RUN apt-get update \
&& apt-get install -y wget git unzip libpq-dev \
&& docker-php-ext-install pdo_mysql\
&& : 'Install Node.js' \
&& curl -sL https://deb.nodesource.com/setup_12.x | bash - \
&& apt-get install -y nodejs \
&& : 'Install PHP Extensions' \
&& docker-php-ext-install -j$(nproc) pdo_pgsql
ENV COMPOSER_ALLOW_SUPERUSER 1
COPY --from=composer /usr/bin/composer /usr/bin/composer
WORKDIR /var/www/html/lara_base
Dockerビルド
下記コマンドでビルド&起動
lara_base % docker-compose up -d
できたらコンテナにお邪魔します。
lara_base % docker-compose exec lara_base_web bash
/var/www/html/lara_base#
Laravelインストールと初期設定
Composerでインストール
まずはコンテナ内で「composer」コマンドを実行します。
かっちょよいAAとバージョン情報が表示されたら正常にComposerがインストールされています。
※便宜上コマンドプロンプトを$で表記しています。
$ composer
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 2.2.3 2021-12-31 12:18:53
下記コマンドを実行するとLaravelの最新バージョンがwebディレクトリにインストールされます。
$ composer create-project laravel/laravel --prefer-dist .
DBの接続設定
webディレクトリ内にLaravelのファイル群がブリブリと作られたので、初期設定です。
まずは.envファイルにDBの設定等々記載します。
APP_NAME=Lara_base ☆とくにこだわりが無ければ変える必要なし
APP_ENV=local
APP_KEY=base64:vNfR+kcj+nb1qWU+bP8w+b8Cy9CnwruUrtzbWnwW8Ok=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=daily ☆ログを日付ごとに出力するように設定
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
DB_CONNECTION=mysql
DB_HOST=lara_base_db ☆docker-compose.ymlに記載した内容を設定
DB_PORT=3306
DB_DATABASE=lara_base ☆docker-compose.ymlに記載した内容を設定
DB_USERNAME=root ☆docker-compose.ymlに略
DB_PASSWORD=password ☆docker-compo略
下記コマンドでステータスを確認します。
$ php artisan migrate:status
Migration table not found.
赤い文字でMigration table not found.と表示されれば無事DBに接続ができているのでOKです。
タイムゾーンと言語設定
configディレクトリ内のapp.phpを開いて下記部分を書き換えます。
//'timezone' => 'UTC',
'timezone' => 'Asia/Tokyo',
//'locale' => 'en',
'locale' => 'ja',
次に下記コマンドを実行して日本語化ツールのインストーラをダウンロードして実行して削除
$ php -r "copy('https://readouble.com/laravel/8.x/ja/install-ja-lang-files.php', 'install-ja-lang.php');"
$ php -f install-ja-lang.php
$ php -r "unlink('install-ja-lang.php');"
/web/resource/lang/下にjaディレクトリが作成されていればOKです。
この中に何があるのかは君の目で確かめよう!
起動して確認
開発用サーバを下記コマンドで起動し、ちゃんと動くか確認です。
$ php artisan serve --host=0.0.0.0 --port=8081
http://127.0.0.1:8081/ へアクセスしてLaravelのスタートページが表示されればOKです。
Laravel Breezeのインストール
下記コマンドでインストール&インストール
ついでにマイグレーションもここでやっちゃおう
$ composer require laravel/breeze
$ php artisan breeze:install
$ php artisan migrate
フロントのVueライブラリを表示するためにnpmをインストール&ビルド
$ npm install && npm run dev
ブラウザを更新すると右上にLoginとRegisterが表示されたので多分成功。
ユーザ登録すると特に設定項目のないシンプルなダッシュボードが表示されます。
こういうのでいいんだよ。
おわりに
今日はここまでで一旦終わります。
環境構築だけしかしていないですが、触ってみて一番に思ったのが、認証系のコントローラなどがちゃんとAppディレクトリに作成されているので、改変やカスタマイズ等がし易いと思いました。
JetStreamでは認証関係のControllerやRouteがVendor内に隠されていたので、ドキュメントを眺めながらウンウン言っていましたが、こっちの方がシンプルでわかり易いです。
また、JetStreamではプロフィール設定等の基本機能がデフォルトでできていて豪華な反面、ちょっと外れたことをしようとするとドキュメントと睨めっこしなきゃできなかったので、これくらいシンプルでわかり易い方が個人的に好きです。
今回作成したものは下記ブランチにコミットしました。
参考
Discussion