Docker Laravel6のアプリにユーザ認証機能を付与する


目的

  • 環境構築とLaravelアプリ作成後にユーザ認証の機能を付与する方法をまとめる。

実施環境

  • ハードウェア環境
項目 情報
OS macOS Catalina(10.15.5)
ハードウェア MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
プロセッサ 2 GHz クアッドコアIntel Core i5
メモリ 32 GB 3733 MHz LPDDR4
グラフィックス Intel Iris Plus Graphics 1536 MB

前提条件

前提情報

  • 特になし

読後感

  • Laravelアプリにauthを用いたユーザ認証機能を付与することができる。

概要

  1. Dockerのphpコンテナに入る
  2. DBの作成と設定
  3. ライブラリのインストール
  4. Authファイルの取得
  5. 確認

詳細

  1. Dockerのphpコンテナに入る

    1. 下記コマンドを実行してDockerの起動しているコンテナの一覧を表示する。

      $ docker ps
      
    2. PHPのコンテナを探し下記コマンドを実行する。

      $ docker exec -it phpコンテナの名前 bash
      
    3. Dockerコンテナ内で下記コマンドを実行してnginxのドキュメントルートに移動する。

      $ cd /usr/share/nginx/html/app
      
  2. DBの設定

    1. Dockerコンテナ内のappディレクトリで下記コマンドを実行して.envファイルを開く。

      $ vi .env
      
    2. DBの記載を下記の様に修正・追記を行う。

      /usr/share/nginx/html/app/.env
      DB_CONNECTION=mysql
      DB_HOST=mariadb
      DB_PORT=3306
      DB_DATABASE=laravel
      DB_USERNAME=laravel
      DB_PASSWORD=larapass
      
    3. 記載後の.envファイルの内容を下記に記載する。

      /usr/share/nginx/html/app/.env
      APP_NAME=Laravel
      APP_ENV=local
      APP_KEY=base64:3aQ51W/eAA0ICIpKCYhAygUc1SCWOcKBL9Sijrn8iOQ=
      APP_DEBUG=true
      APP_URL=http://localhost
      
      LOG_CHANNEL=stack
      
      DB_CONNECTION=mysql
      DB_HOST=mariadb
      DB_PORT=3306
      DB_DATABASE=laravel
      DB_USERNAME=laravel
      DB_PASSWORD=larapass
      
      BROADCAST_DRIVER=log
      CACHE_DRIVER=file
      QUEUE_CONNECTION=sync
      SESSION_DRIVER=file
      SESSION_LIFETIME=120
      
      REDIS_HOST=127.0.0.1
      REDIS_PASSWORD=null
      REDIS_PORT=6379
      
      MAIL_DRIVER=smtp
      MAIL_HOST=smtp.mailtrap.io
      MAIL_PORT=2525
      MAIL_USERNAME=null
      MAIL_PASSWORD=null
      MAIL_ENCRYPTION=null
      MAIL_FROM_ADDRESS=null
      MAIL_FROM_NAME="${APP_NAME}"
      
      AWS_ACCESS_KEY_ID=
      AWS_SECRET_ACCESS_KEY=
      AWS_DEFAULT_REGION=us-east-1
      AWS_BUCKET=
      
      PUSHER_APP_ID=
      PUSHER_APP_KEY=
      PUSHER_APP_SECRET=
      PUSHER_APP_CLUSTER=mt1
      
      MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
      MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
      
  3. ライブラリのインストール

    1. Dockerコンテナ内のappディレクトリで下記コマンドを実行してライブラリを取得する。(ライブラリのバージョン指定1.*を行わず実行するとエラーになる。バージョン指定をせずエラーになった話はこちら→Laravel 6 $ composer require laravel/uiを実行するとエラーが発生する)

      $ composer require laravel/ui 1.*
      
  4. Authファイルの取得

    1. Dockerコンテナ内のappディレクトリで下記コマンドを実行してAuthに必要なファイルを取得する。

      $ php artisan ui bootstrap --auth
      
    2. Dockerコンテナ内で下記コマンド実行してnvmをインストールする。

      $ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
      
    3. Dockerコンテナ内で下記コマンドを実行してnode.jsとyarnをインストールする。

      $ . ~/.nvm/nvm.sh && nvm install node && npm i -g yarn
      
    4. Dockerコンテナ内で下記コマンドを実行して必要なCSSファイルをインストールする。

      $ npm install && npm run dev
      
  5. 確認

    1. 下記にアクセスし、Laravelのホーム画面が出力されることを確認する。

    2. 「REGISTER」をクリックする。

    3. 下記の画面が出力されることを確認する。

    4. Dockerコンテナ内の/usr/share/nginx/html/appディレクトリに移動し下記コマンドを実行する。

      $ php artisan migrate
      
    5. 各認証情報を入力し「Registar」をクリックする。

    6. 下記の様に初期登録とログインすることができればユーザ認証機能の付与は完了である。

参考文献