WEB/システム/IT技術ブログ

Windows上にて、wsl2とDockerで開発環境を構築した際に、ファイルの権限エラーが発生する事があります
wsl2とアプリケーションコンテナのユーザIDが異なるのが原因なのですが、その回避策のひとつを紹介します

環境は以下の通りです

  • Windows 11 Home 64bit
  • wsl 2.2.4.0
  • Ubuntu 24.04 LTS
  • Docker Desktop 4.33.1
  • Laravel 9

例えば、LaravelプロジェクトをUbuntuに展開してる事を前提とします

Windows 11 HomeにDocker Desktopをインストールします

今回、インストールする環境は以下の通りです

  • Windows 11 Home 64bit 22H2
  • Docker Desktop 4.32.0

システム要件

Windows 11にDocker Desktopをインストールするためには、以下の要件を満たす必要があります

  • WSL 2がインストール済み
  • Windows 11 Home 64bitのバージョン21H2以上
  • CPUが仮想化に対応していること

Windows 11 HomeにWindows Subsystem for Linux 2(WSL 2)をインストールします

以下の環境でのインストールです

  • Windows 11 Home 22H2
  • Ubuntu 24.04 LTS

WSL 2のインストール

スタートメニューからコントロールパネルを開き、「プログラム」を選択します
「Windowsの機能を有効化または無効化」クリックし、「仮想マシン プラットフォーム」と「Linux 用 Windows サブシステム」を有効化します

私の場合、デフォルトで「仮想マシン プラットフォーム」が有効化されてたので、「Linux 用 Windows サブシステム」のみチェックを入れます

「OK」ボタンを押すと、OSの再起動を促されるので、再起動してインストールを完了させます

コマンドプロンプトまたはPowerShellを起動し、以下のコマンドでインストール確認ができます

> wsl --status
既定のバージョン: 2

Linux 用 Windows サブシステム カーネルは、'wsl --update' を使用して手動で更新できますが、システム設定が原因で自動更新が 発生することはありません。
カーネルの自動更新を受け取るには、 Windows Update の設定を有効にしてください:' Windowsの更新に、その他のMicrosoftの製品 の更新情報を受け取る'。
詳細については、 https://aka.ms/wsl2kernel.
 を参照してください
WSL 2 カーネル ファイルが見つかりません。カーネルを更新または復元するには、'wsl.exe --update' を実行してください。

xampp環境のLaravelプロジェクトでMailHogを活用します。

時に開発環境でのメールテストは面倒です。
例えば、ローカルからメールを送信する環境を構築して、テスト用メールアドレスを作成して、メールを送信する度にメールボックスを確認するなど。
さらに、誤送信に気を使いつつなど、コストとリスクがあります。
そこでMailHogで気軽なローカル開発環境を構築してみます。

MailHogを使うと、全てのメールはローカルのMailHogメールボックスに送信されるので、テスト用のメールアドレスを用意する必要もなければ、誤送信の心配もありません。

  • Windows 11 Home
  • xampp 8.1.25
  • Laravel 9.52.0
  • MailHog v1.0.0

MailHogをダウンロード

MailHogの公式サイトから、Windows用の実行ファイル「MailHog_windows_amd64.exe」をダウンロードします。
GitHub – mailhog/MailHog: Web and API based SMTP testing

ダウンロードしたファイルを任意の場所、例えば今回は以下の場所に設置します。

C:\xampp-8.1.25\sendmail\MailHog_windows_amd64.exe

ある日、Reactプロジェクトにおけるダッシュボードのフロントをデザインなしで実装する案件がありました。
デザイン指定がないとはいえ、それっぽいモダンなレイアウトは確保したい。
そこで今回「Flowbite React」を試してみます。
Flowbite React Components

「Flowbite」は「Tailwind CSS」のコンポーネントで、クラスを指定するだけでモダンな見た目を提供してくれます。
応用性がある反面、クラスの指定が多少細かいので冗長になりがちです。
「Flowbite React」では、簡単な引数を指定するだけで、Flowbiteを適用することができます。

今回試した環境は以下の通りです。Tailwind CSSなどはインストール済みを前提とします。

  • Windows 11 Home
  • Node.js 16.19.1
  • React 18.2.0
  • Tailwind CSS 3.2.7
  • Flowbite 0.4.3

Laravelでデータベースをテストします。
今回は、新規プロジェクトではなく、既存プロジェクトをテストする前提で進めていきます。

  • PHP 8.0.25
  • Laravel 9.52.0
  • SQLite

テスト用のDBを用意する

データベースをテストする際、安全なDBが必要です。
つまり、テストで本番環境のDBを使うわけにはいきません。また、場合によっては開発環境のDBを汚すこともあると思います。

そこで、今回はテスト用のDBを用意してみます。
例えば、SQLiteで用意したテスト用DB「testing」を使用します。

まず、空のファイル「/database/database_test.sqlite」を用意します。Linux系であればtouchコマンド、Windowsであればテキストファイルを新規作成します。

次に「/config/database.php」を開きます。
「sqlite」ブロックをコピペして「testing」にリネームします。

いつものようにLaravelのFakerでダミーデータを作成しようとしたら、関数joinでエラーになってしまいました。

join(): Argument #2 ($array) must be of type ?array, string given

そういえば、最近、開発環境をPHP7.xからPHP8.xにアップグレードしたばかりでした。

調べてみると、ライブラリ「fzaninotto / Faker」は2020年に開発がストップしていて、PHP8には対応していないようです。
fzaninotto/Faker: Faker is a PHP library that generates fake data for you

代替のライブラリとしてはFakerPHPがあるようです。
FakerPHP / Faker

早速、ライブラリをインストールしてみます。composer.jsonから古いライブラリを削除します。

		"fzaninotto/faker": "^1.4",

続けて新しいライブラリを追加して、Composerインストールを実行します。

		"fakerphp/faker": "^1.9.1",

インストール後、再度Fakerを実行したところ、無事にエラーは解消されました。

Laravel HomesteadでWindowsに開発環境を作ります。

これまでxamppをメインにWindowsで開発をしてきました。
モダンな環境でということでwsl & Dockerに乗り換えたのですが、環境をアップグレードする度にCPUの負荷が上がったり、メモリを大量に消費したり。。
チューニングの繰り返しで作業にならないので、安定した環境を求めてLaravel Homesteadを試してみます。

ちなみにHomesteadに必要なVirtualBoxとVagrantはインストール済みを前提とします。

  • Windows 11 Home 64bit
  • VirtualBox 7.0.6
  • Vagrant 2.3.4

Homesteadをインストール

まず、BoxをVagrantに追加します。Windows PowerShellを起動して以下のコマンドを実行します。

> vagrant box add laravel/homestead
==> box: Loading metadata for box 'laravel/homestead'
    box: URL: https://vagrantcloud.com/laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) libvirt
2) parallels
3) virtualbox

Enter your choice:

プロバイダの選択を求められるので、今回はVirtualBoxの「3」を選択します。
こちらの処理に5分ほどかかりました。

開発環境用に仮想マシンが必要になったので、WindowsにVirtualBoxとVagrantをインストールしてみます。

ここ最近ではWSLも話題です。実際に使用してみたのですが、CPUへの高負荷、メモリ大量消費、チューニングの繰り返しで、仕事にならないので、当面の開発環境としてVagrantを試してみたいと思いました。

  • Windows 11 Home 64bit
  • VirtualBox 7.0.6
  • Vagrant 2.3.4

VirtualBoxのインストール

まずはVirtualBoxをインストールします。
Oracle VM VirtualBox
公式サイトのメニュー「Downloads」から「Windows hosts」をクリックして、インストーラをダウンロードします。
ダウンロードしたファイル「VirtualBox-7.0.6-155176-Win.exe」を実行し、インストールを開始します。

基本的にデフォルトでのインストールで問題ありません。「Next」をクリックしてインストールを進めます。
途中で、ネットワークが一時的に切断される注意書きが表示されます。問題なければ、インストールを続行します。

以下の画面が表示されたらインストールは完了です。

Monthly Archives