FrontPage>Laravel12の開発環境をDockerで構築する

Laravel12の開発環境をDockerで構築する

投稿日: 2025-03-13 (木)
AjObGy2.png


はじめに

いきなりですが、ファイルやらディレクトリを記載しておきます。

作成する環境

現時点での私環境

ファイル構造

compose.yaml

すでにポートが埋まっていて各ポートを変更したい方はportsのところを変更してください。
ホスト側:コンテナ側 です。左側のホスト側のポートだけ変更するといいでしょう。

ちなみにdocker-compose.ymlじゃないの?って思う方いらっしゃるかもしれませんが、compose.yamlが現在は推奨されているそうです。

phpMyAdminが不要ならばpmaの部分は削除するといいでしょう。

各ポート番号の割り当て先

上記のcompose.yamlのポート割当先は以下の通りです

となっている。

docker/nginx/Dockerfile, default.conf

compose.yamlの build: ./docker/nginx で指定したディレクトリです。

Alpine Linux上のNginxイメージを使います。

Nginx用の仮想ホスト設定ファイルです。
(開発環境用なので本番環境ではもっとセキュリティを考慮して変えましょう)

docker/php/Dockerfile, php.ini

PHP 8.3 FPM版を使います
FPMはNginx上で動かすことができ、そして普通のCGI版よりも速度が早いFast CGIってのが使われているそうです。

PHPの設定ファイルです

.env

環境変数です。
compose.yaml にて${DB_NAME:-laravel}と指定されている箇所は.envで定義されたDB_NAMEを使い、未定義であればDB_NAME=laravelをデフォルトとしています。

本番環境でなければこのままで問題ないです
ちなみに変更するのであれば間違ってGitでコミットしないように.gitignoreも設定しておき、なお.env.exampleも用意しておくといいでしょう

.dockerignore

ビルドに必要ないファイルを指定できます。いわゆる.gitignoreみたいなやつです。(構文は違うので気をつけてください)

src/app, src/db

上記のようなフォルダ構造になるようにディレクトリを作成してください。
app が作業フォルダとなります。
ほとんどはvar/www/htmlそのままだと思います。一部だけ最適化のためにボリュームに入ってますが。

dbはMySQLのデータが入るフォルダです。
シンボリックリンクが対応していないドライブ上でMySQLをバインドマウントするとエラーが発生して起動できなくなる可能性があります。
DockerのMySQLが起動しない問題、exFATのせいだった でこの件について記載しましたが、NTFSなどのシンボリックリンクをサポートしているファイルシステムを用いたドライブ上を使うことが無難です。(もし、exFATでも使いたいのであればバインドマウントをやめるかmysql用のDockerfileを作ってmy.confにてシンボリックリンクを無効にすると良いでしょう)

セットアップ

ファイルの配置が終わったら以下のコマンドを実行しましょう。ビルドと起動をしてくれます。

docker compose up -d

ビルドは初回のみなのでDockerfileなどに変更を加えた場合、二度目から再ビルドするためには「docker compose up -d --build」のように--buildを追加する必要があります。

起動できたら

docker compose exec app bash

でシェルに入りましょう。

Laravelのインストール

docker/php/Dockerfile でデフォルトのカレントディレクトリを「/var/www/html/」としているので起動後も「/var/www/html/」となっていると思います。

コンテナ内のシェルで以下を実行します。

export COMPOSER_PROCESS_TIMEOUT=1200
composer create-project laravel/laravel .
chmod -R 777 /var/www/html/storage /var/www/html/bootstrap/cache

COMPOSER_PROCESS_TIMEOUTはPHPのComposerで1200秒まで1つのプロセスにかけてもよい、逆に言えばそれ以上時間がかかると強制停止されます。
デフォルトでは300秒となっており、それでは短すぎてスペックの低いPCや回線の悪い場所ではパッケージのインストールに失敗する可能性があるため設定しました。

閉じるには

docker compose down

です。

おまけ

ついでのメモみたいな感じです。

Laravel Breeze

LaravelのBreezeパッケージをインストールし、それを使ってReactも導入します。
2番のコマンドによってReactの他にInertia.jsやLaravel Sailなどもインストールされます。

composer require laravel/breeze --dev
php artisan breeze:install react

Chakra UI

npm install @chakra-ui/react @emotion/react @emotion/styled framer-motion @chakra-ui/icons`

.gitignore

.env
src/*

エラー

Error response from daemon: error while creating mount source path 'xxx': mkdir xxx: file exists

これはsrc/app、src/dbのフォルダを作り忘れていると思います。

[Server] Could not set file permission for private_key.pem

dbのマウント先フォルダの権限の設定がミスっていると思われます。

もしくはファイルシステムがシンボリックリンクをサポートしていないかもしれません。->DockerのMySQLが起動しない問題、exFATのせいだった

コメント

コメントはありません。 Comments/Laravel12の開発環境をDockerで構築する

お名前:
URL B I U SIZE Black Maroon Green Olive Navy Purple Teal Gray Silver Red Lime Yellow Blue Fuchsia Aqua White

キーワード: 情報技術, Docker, コンテナ, プログラミング, ウェブ, Laravel12, PHP8, 仮想環境, web, フレームワーク, Framework, データベース, JavaScript, 最新, 方法, やり方

検索

 

プロフィール

Pitan
pitan_prof.png
プログラミングや音MADやらが趣味
Table of Contents

最新のページ

最新の5件
2025-06-16 2025-06-12 2025-04-29 2025-03-28 2025-03-20

[もっと見る]

タグ

[もっと見る]

人気のページ

人気の5件

カウンター

合計: 155
今日: 1
昨日: 1
オンライン: 2
  編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2025-03-13 (木) 16:47:24