Laravel9 (Breeze) ログイン認証を入れる

docker

記事について

Laravel9のlaravel-breezeを使った認証のメモ。ベース環境は過去に作成した記事のものを使用。前提環境のlaravel9環境構築は「Docker+Nginx+Laravel9+php-8.1+php-fpmの環境作成」、mysql8の環境構築は「mysql8単体のDocker環境を作成する」を参照。

Dockerfileの修正

Dockerfileの修正

nodejs周りをのインストールを入れた修正版。APP_BASE/docker/app/Dockerfileを修正する。nodejsをそのまま入れるとビルドに失敗したのでバージョン指定でインストールするようにしている。入るバージョンは18.x。

FROM php:8.1.8-fpm-buster
SHELL ["/bin/bash", "-oeux", "pipefail", "-c"]

# timezone environment
ENV TZ=Asia/Tokyo \
  # locale
  LANG=en_US.UTF-8 \
  LANGUAGE=en_US:en \
  LC_ALL=en_US.UTF-8 \
  # composer environment
  COMPOSER_ALLOW_SUPERUSER=1 \
  COMPOSER_HOME=/composer \
  COMPOSER_NO_INTERACTION=1

COPY --from=composer:2.1 /usr/bin/composer /usr/bin/composer

RUN apt-get update && \
  apt-get -y install git wget vim zip curl unzip libicu-dev libonig-dev libzip-dev locales libpq-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev libjpeg-dev libcurl4-gnutls-dev gnupg2 procps grep curl && \
  apt-get clean && \
  rm -rf /var/lib/apt/lists/* && \
  locale-gen en_US.UTF-8 && \
  localedef -f UTF-8 -i en_US en_US.UTF-8 && \
  mkdir /var/run/php-fpm && \
  mkdir /var/log/php && \
  docker-php-ext-install intl pdo_mysql zip bcmath mbstring && \
  docker-php-ext-configure gd --with-freetype --with-jpeg && \
  docker-php-ext-install -j$(nproc) gd && \
  docker-php-ext-install curl && \
  composer config -g process-timeout 3600 && \
  composer config -g repos.packagist composer https://repo.packagist.org
RUN curl -sL https://deb.nodesource.com/setup_18.x | bash
RUN apt-get install -y nodejs

COPY ./php-fpm.d/zz-www.conf /usr/local/etc/php-fpm.d/zz-www.conf
COPY ./php.ini /usr/local/etc/php/php.ini

WORKDIR /var/www

DB作成

mysqlのコンテナを起動後、mysqlにログインし、今回のアプリケーションで使うDBを作成する。この例のDB名称は「laravel」。

$ mysql -u root -p -h 127.0.0.1
Enter password:
...
mysql> CREATE DATABASE laravel CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
Query OK, 1 row affected (0.02 sec)

laravel-breezeのインストール

まずdockerコンテナにログインする。

$ docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                      NAMES
827c2d2cebde   laravel9-app-nginx     "/docker-entrypoint.…"   47 minutes ago   Up 47 minutes   80/tcp                                     laravel9-app-nginx
b53815b1f0cd   laravel9-app-app       "docker-php-entrypoi…"   47 minutes ago   Up 47 minutes   9000/tcp                                   laravel9-app
8366bc2c2f34   mysql:8.0.31           "docker-entrypoint.s…"   11 days ago      Up 45 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp          mysql8-general

$ docker exec -it b53815b1f0cd /bin/bash

nodejsとnpmのこの時点でのバージョンは以下。

(コンテナ内部で)
# node -v
v18.12.1
# npm -v
8.19.2

breezeをインストール、ビルドする。

(コンテナ内部で)
# composer require laravel/breeze --dev
# php artisan breeze:install
# npm run build

環境設定ファイル(.env)の修正

.envを作成または修正する。今回修正するのはDB接続部分のみ。

(コンテナ内部で)
# vim /var/www/.env
...
DB_CONNECTION=mysql
DB_HOST=mysql8-general
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=password
...

必要テーブルの作成(migration)

breezeで必要になるテーブルをmigrationで作成する。

# cd /var/www
# php artisan migrate

ユーザ作成・ログイン

http://laravel9-app.localhost/register へアクセスし、アカウントを登録する。

次に http://laravel9-app.localhost/login からログインしてみる。

ログイン後ダッシュボートが見れれば完了。

余談

やっとベースができたので、マルチログインなど認証いじったりしていく予定。

コメント

タイトルとURLをコピーしました