技術情報
- 2025年08月01日
- 技術情報
Docker環境:Laravelのインストール方法(PHP8.4対応)
Docker 上で Laravel 環境(Laravel 12 + PHP 8.4)を構築する手順をまとめました。
以下の手順で、Apache + MySQL + PHP + Laravel の開発環境を作成することができます。
事前準備・前提条件
以下のセットアップが完了している必要があります:
・Docker Desktop をインストール済みであること
・Docker が起動中であること
・docker-compose.yml にて Apache + PHP8.4 + MySQL + phpMyAdmin を定義済みであること
動作確認項目
phpMyAdmin にアクセスできるか確認
→ http://localhost:8001/
index.html が表示されるか確認
→ ファイルパス:D:\docker_workspace\project_name\laravel-app\index.html
→ 表示URL:http://localhost:8000/
Laravel プロジェクトの作成手順
1.コンテナの起動
まず、docker-compose.yml があるディレクトリに移動し、Docker コンテナを起動します。
cd D:\docker_workspace\project_name
docker compose up -d
2.コンテナに入る
docker-compose exec project_name bash
3.Laravel プロジェクトの作成(PHP 8.4 対応)
composer create-project laravel/laravel . –prefer-dist
4.権限の設定
chown -R www-data:www-data storage bootstrap/cache
chmod -R 775 storage bootstrap/cache
5..env ファイルの編集
テキストエディタで .env を開き、以下のように編集してください(データベース情報は任意設定)。
DB_CONNECTION=mysql
DB_HOST=mysql_db
DB_PORT=3306
DB_DATABASE=project_name
DB_USERNAME=(任意の設定をおこなってください)
DB_PASSWORD=(任意の設定をおこなってください)
6.Laravel 初期設定
php artisan key:generate
php artisan config:cache
php artisan migrate
7.Laravel の動作確認
以下URLにアクセスし、Laravel のウェルカムページが表示されればOKです。
http://localhost:8000/public/
A5:SQL Mk-2(A5m2)からの DB 接続確認
以下の設定で接続可能です:
ホスト:localhost
ポート:3308
ユーザー名:(任意の設定をおこなってください)
パスワード:(任意の設定をおこなってください)
Laravel からの DB 接続テスト
以下のようなコードでデータが取得できれば、Laravel からの DB 接続も正常に確認できています。
// DB connection test
$testcon = DB::select(‘SELECT * FROM migrations’);
dd($testcon);
バージョン確認コマンド
Laravel のバージョン確認:
php artisan –version
PHP のバージョン確認:
php -v
以上で、Laravel 12 + PHP 8.4 の Docker 開発環境の構築は完了です。
木曜日担当:nishida
nishida at 2025年08月01日 10:00:00
- 2025年07月03日
- 技術情報
Docker for Windowsの「WSL Integration」エラーとその対処法
今回は、Docker for Windows を使用中に発生した「WSL Integration」関連のエラーと、その対処方法について共有したいと思います。
発生したエラー
先日、Docker コンテナを起動しようとしたところ、以下のエラーが表示され、再起動しても解消されませんでした。
WSL integration with distro 'Ubuntu' unexpectedly stopped. Do you want to restart it?
configuring docker in Ubuntu: docker cli config: failed to write file: exit status 2
前日までは問題なく動作していたため、WSL(Windows Subsystem for Linux)側が不安定になっているのではないかと考え、次のコマンドで WSL を一度シャットダウンしました。
wsl --shutdown
再び Docker Desktop を起動すると、今度は以下の別のエラーが発生しました。
WSL integration with distro 'Ubuntu' unexpectedly stopped. Do you want to restart it?
retrieving homedir for Ubuntu distro: getting home folder for Ubuntu distro: running echo $HOME in Ubuntu: sending to distro: write |1: The pipe is being closed.
再起動を試みてもコンテナの起動には至らず、Ubuntu 側の WSL 環境が壊れている可能性が考えられました。
WSL(Ubuntu)に直接ログインできるか確認
念のため、WSL 上の Ubuntu に直接ログインできるか確認してみました。
wsl -d Ubuntu
すると以下のように、正常にログインできました:
Welcome to Ubuntu 22.04.2 LTS (GNU/Linux 4.4.0-19041-Microsoft x86_64)
…
linux@LAPTOP:/mnt/c/Users/nishida$
このことから、WSL 自体は正常に動作しており、Docker Desktop 側の連携に問題があると判断しました。
一時的な回避策:WSL Integration をオフにする
以下の手順で、WSL との連携を一時的に無効化してみました。
1. Docker Desktop を開く
2. Settings > Resources > WSL Integration に移動
3. 「Enable integration with my default WSL distro」のチェックを外す
4. Docker Desktop を再起動
この状態では WSL 経由での連携はできませんが、Docker コンテナの起動自体は可能で、開発作業も継続できることが確認できました。
・Windows 側(cmd、PowerShell、VSCode など)から docker CLI の利用は可能
・Vue.js プロジェクトのビルドも問題なし
→ただし、WSL(Ubuntu)内では docker コマンドが使用できません。
恒久的な対処:WSL バージョンを 2 にアップグレード
より根本的な解決策として、Ubuntu を WSL 1 → WSL 2 にアップグレードすることにしました。これは再インストール不要で、次のコマンドでアップグレード可能です:
wsl –set-version Ubuntu 2
変換後に再び Docker Desktop の設定画面へ行き、
Settings > Resources > WSL Integration にて
「Enable integration with my default WSL distro」にチェックを入れ直して保存。
この後は、エラーも表示されず、WSL との連携も正常に復旧しました。
同じようなエラーに遭遇した方の参考になれば幸いです。
参考リンク:
WSL 2 へのアップグレード方法(Microsoft)
https://learn.microsoft.com/ja-jp/windows/wsl/install
木曜日担当:nishida
nishida at 2025年07月03日 10:00:00
- 2025年06月19日
- 技術情報
Laravelの定数管理方法
今回は、Laravelにおける定数の管理方法を紹介したいと思います。
各方法とその特徴、用途を以下にまとめます。
.env ファイルを使用する方法(環境変数)
環境ごとに異なる値(APIキー、DB接続情報など)を .env ファイルで管理します。
使用例
API_KEY=abcd1234
コントローラ内などで以下のように使用します。
$apiKey = env('API_KEY');
特徴
環境ごとに値を切り替えやすい(本番・開発など)
APIパスワードなどセキュアな情報をコードにハードコーディングせずにenvファイルに記述をおこない、gitignoreでコミット対象からも除外しておく。
キャッシュされないので変更が即時反映される
config/const.php ファイルを使う方法
独自の設定ファイルを config/const.php のように作成し、アプリ全体で共有したい定数を定義する。
例:config/const.php
return [
'status' => [
'active' => 1,
'inactive' => 0,
'deleted' => -1,
],
'user_roles' => [
'admin' => 1,
'user' => 2,
],
];
使用方法:
$status = config('const.status.active'); // 1
特徴
アプリ内の定数をまとめて管理できる
配列構造で柔軟に対応できる
Laravelの php artisan config:cache によって高速アクセスが可能
define() 関数で定義(グローバル定数)
例:
define(‘APP_VERSION’, ‘1.0.0’);
使用方法:
echo APP_VERSION;
特徴・注意点
グローバルスコープで使用できる
Laravelでは基本的に config や env で管理することが多い
Enum を使う(PHP 8.1以上)
概要
PHP 8.1以降で導入された enum を使って型安全な定数を定義できる。
例:
app/Enums/UserStatus.php
enum UserStatus: int {
case Active = 1;
case Inactive = 0;
case Deleted = -1;
}
使用方法:
$status = UserStatus::Active;
特徴
型安全(間違った値の代入を防げる)
木曜日担当:nishida
nishida at 2025年06月19日 10:00:00
- 2025年06月05日
- 技術情報
Docker Desktopのコンテナ内でコマンドを実行する方法
今回はWindowsのDocker Desktopのコンテナ内でコマンドを実行する方法を紹介したいと思います。
1.Docker Desktopの起動をおこない、任意のコンテナを開始します。
2.コンテナ名を確認
以下のコマンドで現在起動しているコンテナの一覧が見られます。
docker ps
項目としては
CONTAINER ID、IMAGE、 COMMAND、NAMES が表示されますので、コマンドを実行したいコンテナのNAMEをメモしておきます。
3.コンテナ内でのコマンド実行方法
以下のようにコマンドを実行することができます。
※[NAME]箇所は上記で確認したコンテナのNAMEに書き換えます。
docker exec -it [NAME] ls
4.Laravelコンテナ内で artisan コマンドを実行するには、以下のように Docker の exec コマンドを使います。
docker exec -it [NAME] php artisan <コマンド>
よく使うartisanコマンド実行例
・Laravelのバージョン確認
docker exec -it [NAME] php artisan –version
・キャッシュクリア
docker exec -it [NAME] php artisan config:clear
・マイグレーション実行
docker exec -it [NAME] php artisan migrate
・シーディング実行
docker exec -it [NAME] php artisan db:seed
・サーバー起動(開発用)
docker exec -it [NAME] php artisan serve –port=8080
木曜日担当:nishida
nishida at 2025年06月05日 10:00:00
- 2025年05月22日
- 技術情報
Laravelのリダイレクト処理で強制的にhttpsにする方法
以下のように結果画面へ一時リダイレクトをかける場合に、httpsスキームが引き継がれない場合があります。
return redirect('result', 307);
その場合、以下のようにsecure()を使えば、常にhttpsへリダイレクトされます。
return redirect()->secure('result', 307);
JavaScriptのassetなどを読み込む際に以下のようにbladeディレクティブを使用する場合もhttpsスキームが引き継がれない場合があります。
<script src="{{ asset('common/js/xxxx.js') }}"></script>
その場合はLaravelのヘルパー関数 secure_asset() を使用することでhttpsでassetを読み込むことが可能になります。
<script src="{{ secure_asset('common/js/xxxx.js') }}"></script>
プロジェクト全体に対してグローバルに https を強制させたい場合は、Laravelの AppServiceProvider で設定が可能です。具体的には以下のように記述することですべての url() や asset() などが https を前提に生成されるようになります。
use Illuminate\Support\Facades\URL;
public function boot()
{
if (app()->environment('production')) {
URL::forceScheme('https');
}
}
上記の例では、environment(‘production’)で本番環境のみ、httpsを強制するように設定しています。
木曜日担当:nishida
nishida at 2025年05月22日 10:00:00