投稿

ラベル(Laravel)が付いた投稿を表示しています

Windows10に構築したDocker+Laravel開発環境をWSLへ移行する

イメージ
Windows10の環境でDocker+Laravelの環境で開発をしていて、Webレスポンスが非常に遅く開発に支障が出ているため、WSLに移行してかなり改善されたのでその際の手順をまとめます。 githubの設定 SSHの鍵ペアを作成 ファイル名はデフォルト、パスフレーズは無しで秘密鍵と公開鍵のペアを、ssh-keygenコマンドで生成します。 $ cd ~/.ssh $ ssh-keygen 完了すると、以下の2ファイルが生成されます。 ~/.ssh/id_rsa (秘密鍵) ~/.ssh/id_rsa.pub (公開鍵) 公開鍵をgithubへ設定 以下の手順で、id_rsa.pub (公開鍵)の内容をgithubへ設定します。 1. id_rsa.pub (公開鍵)の内容を出力 $ cat ~/.ssh/id_rsa.pub 2. githubへSign in https://github.com/login 3. New SSH Key Settings -> SSH and GPG keys -> New SSH Key をクリック 4. SSH Key 設定内容 以下のように設定して、Add SSH Keyをクリック Title 任意のタイトル Key type Authentication Key Key 1で出力したid_rsa.pub (公開鍵) を貼りつける 以下のように一覧に追加されればOK ソースコードをcloneする ここまでの作業で、WSL内でgithubを利用する準備が整ったので、githubからソースコードをcloneします。 $ git clone git@github.com:s-watanabe-apps/laravel-project-test.git なお、この時cloneするリポジトリのリンクは、githubで任意のリポジトリを開き、Code -> SSH の順にクリックして確認できます。 動作確認① この時点でDocker Desktopが実行されていれば、コンテナを立ち上げることが出来ます。 $ docker-compose up -d Starting laravel-project

docker-compose で起動したweb、MySQLに接続できない事象

イメージ
概要 以前作成したPHP + MySQL + LaravelのDockerプロジェクトがコンテナを立ち上げても画面にアクセスできなくなってしまったときの解決方法です。 以前の記事は以下です。 【Laravel + MySQL】Dockerで開発環境を作る https://www.s-watanabe.work/2020/12/laravel-mysqldocker.html 発生事象 コンテナを起動 $ docker-compose up -d Starting laravel-project_mysql_1 ... done Starting laravel-project_app_1 ... done Starting laravel-project_web_1 ... done ブラウザでアクセス いつものようにブラウザでアクセスしますが接続できません。 http://localhost:8000 ※この時Docker側のログには何も出力されません。 MySQLへ接続 MySQLも確認してみましたが同じく接続できなくなりました。 $ mysql -h 127.0.0.1 -u user -ppassword -D test mysql: [Warning] Using a password on the command line interface can be insecure. ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 2 調査・確認 まず以下の記事を参考に新規のDockerプロジェクトが起動・接続できるかを確認しました。 https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04-ja # docker-compose はインストール済み $ docker-compose --version docker-compose version 1.26.0, build d

【Laravel + MySQL】簡単な認証処理を作る

イメージ
前回作成したLaravelアプリケーションに認証処理を実装します。 データベースの作成 ユーザーテーブル作成 Laravel 6.2 にはセットアップした段階で以下の migration 用のコードが入っていますのでこれを実行します。(※今回使用するのはusersテーブルだけです。) 2014_10_12_000000_create_users_table.php 2014_10_12_100000_create_password_resets_table.php 2019_08_19_000000_create_failed_jobs_table.php $ php artisan migrate Migration table created successfully. Migrating: 2014_10_12_000000_create_users_table Migrated: 2014_10_12_000000_create_users_table (0.41 seconds) Migrating: 2014_10_12_100000_create_password_resets_table Migrated: 2014_10_12_100000_create_password_resets_table (0.43 seconds) Migrating: 2019_08_19_000000_create_failed_jobs_table Migrated: 2019_08_19_000000_create_failed_jobs_table (0.31 seconds) ※migrationでエラーになるという場合は 【Laravel + Docker】migration で could not find driver が出たときの対応 が参考になるかもしれません。 ユーザーデータの登録 次にseedという機能を使ってデータを登録します。これはテストデータやマスターデータなど、開発するにあたって必要なデータを登録する機能です。 database/seeds/DatabaseSeeder.php DatabaseSeeder クラスは最初からあるコードで、このrunメソッドに記載されている seed が

【Laravel + MySQL】Dockerで開発環境を作る

イメージ
Docker、docker-compose.yml を利用して次の開発環境を作成する手順をまとめました。 WEBサーバー nginx:1.15.6 データベース mysql 5.7 アプリケーション php 7.2 フレームワーク laravel 6.2 構成について まずプロジェクト全体の構成は以下のようになっています。 . ├── docker │   ├── mysql │   │   └── my.cnf │   ├── php │   │   └── Dockerfile │   └── web │   └── default.conf ├── docker-compose.yml └── laravel-app 基本的には docker-compose.yml を用いてビルドしますが、PHPのみDockerfileを使います。 ※後に記載しますが、pdo_mysqlをコンテナにセットアップしたいためです。(これが分からなくて少し嵌りました。) 各ファイルについての詳細 Docker Compose docker-compose.yml docker-compose.yml の内容は以下です。 version: '3' services: web: image: nginx:1.15.6 ports: - '8000:80' depends_on: - app volumes: - ./docker/web/default.conf:/etc/nginx/conf.d/default.conf - .:/var/www/html app: build: ./docker/php volumes: - .:/var/www/html depends_on: - mysql mysql: image: mysql:5.7 command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci environment:

【Laravel + Docker】migration で could not find driver が出たときの対応

イメージ
Laravel + Dockerの環境を構築し、Laravel導入時から入っているmigrationを実行したところ could not find driver が出てデータベース接続に失敗したのでその際の解決方法をまとめます。 なお、データベースはDockerコンテナにMySQLを作成しています。 環境について Docker docker-compose.yml 環境はウェブサーバー、PHP、データベースでそれぞれコンテナを立てています。 version: '3' services: web: image: nginx:1.15.6 ports: - "8000:80" depends_on: - app volumes: - ./docker/web/default.conf:/etc/nginx/conf.d/default.conf - .:/var/www/html app: image: php:7.3-fpm depends_on: - mysql volumes: - .:/var/www/html mysql: image: mysql:5.7 environment: MYSQL_DATABASE: test MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password ports: - "3306:3306" volumes: - mysql-data:/var/lib/mysql volumes: mysql-data: migrationエラーについて セットアップ時に入っているmigration Laravelにはセットアップした段階で以下のように3つのmigrationファイルが入っているのでこれを実行してみます。 migrationを実行する $ php artisan migrate --seed Illuminat