WIN+Docker+Ubuntuでlaravelを使うための作業メモ
作成日:2022-11-26, 更新日:2023-07-11
基本
「WSL2+Docker Desktop+UbuntuでLaravel9の開発環境を構築する」に従って試してみた。そのときのメモ
ざっくりした流れ
- Dockerインスト
- Ubuntuインスト
- laravelプロジェクト作成
- Visual Studio Codeのインスト(←必須じゃないらしい)
Dockerインスト
すでにインスト済みなので放置
▼そのときのメモ
・「Docker(+Win)をインスト」
Ubuntuインスト
Ubuntuインスト
「Microsoft Store」から「ubuntu」で検索・入手(インストールされて、コマンドラインが開かれる)
コマンドラインでユーザー名、パスワードを登録
「WSL Integration」の設定
- Dockerを開く
- 「Settings」で「Resourcres」-「WSL Integration」
- 「Ubuntu」にチェックをいれる
- Ubuntuを再起動
laravelプロジェクト作成
作業場所の確保
▼任意のトコにフォルダを作成し、Ubuntuでカレントを移す
cd \\wsl$\Ubuntu\home\recatnap
※「recatnap」はUbuntuをインストしたときのユーザー名
WindowsからWSL2のディレクトリへの接続方法
エクスプローラーのアドレスバーに「\\wsl$」を入力する
※末尾に「$」が入っているためネットワークの一覧には表示されない
laravelプロジェクト作成1
▼Ubuntuで実行(※「example-app」はプロジェクト名になるので任意の文字列にする)
curl -s https://laravel.build/example-app | bash
→「\\wsl$\Ubuntu\home\recatnap\example-app」が出来る
laravelプロジェクト作成2
cd example-app && ./vendor/bin/sail up -d
ブラウザで確認
「http://localhost/」をブラウザで開く
Visual Studio Codeのインスト(←必須じゃないらしい)
Visual Studio Codeが便利らしいので試してみる
まずは、DL・インスト。追加で、Remote Development拡張をインストール
Visual Studio Codeの下にある緑背景の「><」をクリック
Visual Studio Codeの下にある緑背景の「><」
基本、ウィンドウの下部の赤枠あたりのとこに「><」がある。
その後、開きたいフォルダを指定する

VS Code Server for WSL closed unexpectedly
▼なんかのアラートが出てきた
VS Code Server for WSL closed unexpectedly
▼Windows PowerShellを起動して実行・確認(※「規定」が「Ubuntu」になっているか確認したい)
PS C:\Users\xxxx> wslconfig /l Linux 用 Windows サブシステム ディストリビューション: docker-desktop-data (既定) docker-desktop Ubuntu
▼「Ubuntu」を「規定」にする
PS C:\Users\xxxx> wslconfig /setdefault Ubuntu
▼「Ubuntu」が「規定」になったか確認
PS C:\Users\xxxx> wslconfig /l Linux 用 Windows サブシステム ディストリビューション: Ubuntu (既定) docker-desktop docker-desktop-data
再度、Visual Studio Codeの下にある緑背景の「><」をクリックして無事開くことを確認
laravelを修正してブラウザで確認
ひとまず既存のハローワールド替わりのページを修正してみる
→まずは作業対象のファイルを探す
作業対象のファイル
とりあえずルーティングを確認してどのファイルが開かれるかを確認する必要がある
ルーティング
ルーティングは「routes/」の中のファイルのどれか
ブラウザで確認したいページなのでおそらく「web.php」
▼「routes/web.php」
Route::get('/', function () {
return view('welcome');
});
→「view('welcome')」とあるのでこれを起点に探す
コントローラー
「app/Http/Controllers」フォルダの中を確認
→「welcome」がないので使っていないっぽい
ビュー
「resources/views」フォルダの中を確認
→「welcome.blade.php」ってのがいた
ひとまず開いて適当なトコに文字を入力→ブラウザで確認
エラー
▼ブラウザで開くと下記エラー
file_put_contents(/var/www/html/storage/framework/views/xxxxxxxx.php): Failed to open stream: Permission denied
→修正箇所を元に戻してもエラーのまま。
…エラー文に「Permission denied」ってあるけど、このPATHはドコ?
ドコって思ったらubuntuのヤツってことに気づいたのubuntuのコンソールで権限を追加
▼調べると書込み権限をいくつか設定が必要っぽい
- chmod 777 bootstrap/cache
- chmod 777 storage/app/public
- chmod 777 storage/framework/cache
- chmod 777 storage/framework/cache/data
- chmod 777 storage/framework/sessions
- chmod 777 storage/framework/views
- chmod 777 storage/logs
▼1行にしてみる
chmod 777 bootstrap/cache & chmod 777 storage/app/public & chmod 777 storage/framework/cache & chmod 777 storage/framework/cache/data & chmod 777 storage/framework/sessions & chmod 777 storage/framework/views & chmod 777 storage/logs
▼ブラウザで再度確認、エラー文が表示されたままならエラー文のファイルを削除
/var/www/html/storage/framework/views/xxxxxxxx.php
他
日時
- 「config/app.php」の「'timezone'」を「'timezone' => 'Asia/Tokyo',」
ログ関連
- 「config/logging.php」
- 「.env」の「LOG_xxxx」
→ログレベルは「energencey, alert, critical, error, warning, notice, info, debug」まで
カスタマイズ
▼docker-compose.ymlを修正後、ubutsuでコマンド実行
$ ./vendor/bin/sail up -d
PHPのバージョンを変更したい
▼「laravel.xxx」の「build」の「context」
| PHP8.1 |
context: ./vendor/laravel/sail/runtimes/8.1 |
|---|---|
| PHP8.0 |
context: ./vendor/laravel/sail/runtimes/8.0 |
| PHP7.4 |
context: ./vendor/laravel/sail/runtimes/7.4 |
▼「laravel.xxx」の「image」
image: sail-8.1/app
DBのタイムゾーン
▼mysqlのトコを修正(※「TZ」と「command」の行)
~ 略 ~
mysql:
~ 略 ~
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
~ 略 ~
TZ: Asia/Tokyo
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_general_ci','--default-time-zone=+09:00']
~ 略 ~
~ 以下、略 ~
SQLで確認
▼現在の日時の確認
SELECT NOW();
▼タイムゾーンの確認
show variables like '%time_zone%';
phpMyAdminを追加したい
▼「services」の中にphpMyAdmin追加
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql:mysql
ports:
- 8080:80
environment:
#PMA_USER: "${DB_USERNAME}"
#PMA_PASSWORD: "${DB_PASSWORD}"
PMA_HOST: mysql
MEMORY_LIMIT: 256M
UPLOAD_LIMIT: 256M
networks:
- sail
※「DB_USERNAME」「DB_PASSWORD」は「.env」で設定されているので変更不要
他、メモ
- インストしたらすでにAPIトークン認証用に「sanctum」ってのが入っている(マイグレーションファイルがいくつかすでに作られ、ルーティングも設定済み)