手順
必要な準備
- Dockerのインストール: Docker Desktopをインストールしておいてください。
- Docker Compose: Docker DesktopにはDocker Composeが含まれているので、追加インストールは不要です。
ディレクトリ構成
laravel-circulation
├── docker-compose.yml # Docker Compose設定ファイル
├── nginx
│ └── default.conf # Nginxの設定ファイル
└── src
├── app # Laravelのアプリケーションコード
├── bootstrap # Laravelのブートストラップファイル
├── config # 設定ファイル
├── database # データベースマイグレーション等
├── public # Webサーバが公開するディレクトリ (index.phpなど)
├── resources # ビューやフロントエンドリソース
├── routes # ルーティング設定
├── storage # ストレージ関連 (ログなど)
├── tests # テストファイル
└── vendor # Composerでインストールされたパッケージ
docker-compose.yml
の作成
Laravelとその関連サービス(Webサーバーやデータベース)の設定を行います。
以下の例は、NginxをWebサーバーに使い、MySQLをデータベースに設定しています。
version: '3.8'
services:
app:
build:
context: .
dockerfile: Dockerfile
container_name: laravel_app
working_dir: /var/www/html
volumes:
- ./src:/var/www/html
networks:
- laravel_network
webserver:
image: nginx:alpine
container_name: laravel_webserver
working_dir: /var/www/html
volumes:
- ./src:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
ports:
- "8080:80"
networks:
- laravel_network
db:
image: mysql:8.0
container_name: laravel_db
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: laravel
MYSQL_USER: laravel_user
MYSQL_PASSWORD: laravel_password
volumes:
- dbdata:/var/lib/mysql
ports:
- "3306:3306"
networks:
- laravel_network
networks:
laravel_network:
driver: bridge
volumes:
dbdata:
Nginxの設定ファイル nginx/default.conf
の作成
server {
listen 80;
index index.php index.html;
server_name localhost;
root /var/www/html/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Dockerfile
DockerfileでComposerのインストール
# ベースイメージを指定
FROM php:8.1-fpm
# システムの依存関係をインストール
RUN apt-get update && apt-get install -y \
git \
unzip \
libzip-dev \
libicu-dev \
libonig-dev \
libpng-dev \
libjpeg-dev \
libfreetype6-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install \
pdo_mysql \
zip \
intl \
opcache \
gd
# Composerのインストール
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# 作業ディレクトリを設定
WORKDIR /var/www/html
# アプリケーションファイルの権限を設定
RUN chown -R www-data:www-data /var/www/html
Laravelのインストール
次に、Dockerコンテナ内でLaravelをインストールします。
# Dockerコンテナを起動
docker-compose up -d
# Laravelをインストール
docker-compose exec app composer create-project --prefer-dist laravel/laravel .
参考サイト
UnexpectedValueException PHP 8.1.30 10.48.22 The stream or file “/var/www/html/storage/logs/laravel.log” could not be opened in append mode: Failed to open stream: Permission denied The exception occurred while attempting to log: The stream or file “/var/www/html/storage/logs/laravel.log” could not be opened in GitHub Copilot このエラーは、Laravelアプリケーションがログファイルに書き込もうとした際に、 ファイルの書き込み権限が不足しているために発生しています。以下の手順で解決できます。 1)Dockerコンテナに入る docker exec -it <コンテナ名> /bin/bash 2)権限を変更する chmod -R 775 /var/www/html/storage chown -R www-data:www-data /var/www/html/storage 【Laravel】 Bladeテンプレートエンジンを使用する場合、 ファイル名の末尾に.blade.phpを付ける必要があります。 php artisan serveは、Laravelアプリケーションのためのビルトイン開発サーバーを起動するコマンドです https://reffect.co.jp/laravel/laravel-breeze-next-js https://www.udemy.com/course/nextjslaravelbreeze/?srsltid=AfmBOop6AB002927qfNnmtNHzLx2oS9NSaeWHsnH8TJoPRcB0iE2DFNa&couponCode=ST6MT103124 Breezeとは Laravel Breezeは、Laravelアプリケーションにシンプルで軽量な認証機能を提供するスターターパッケージです。 ユーザー登録、ログイン、パスワードリセットなどの基本的な認証機能をすぐに利用できるようにします。 Breezeのインストール手順 以下の手順に従って、Laravel Breezeをインストールします。 ComposerでBreezeをインストール docker exec -it laravel_app composer require laravel/breeze –dev Breezeのインストール docker exec -it laravel_app php artisan breeze:install NPMパッケージのインストールとビルド docker exec -it laravel_app npm install docker exec -it laravel_app npm run dev マイグレーションの実行 docker exec -it laravel_app php artisan migrate Dockerに入る docker exec -it laravel_app /bin/bash コンテナ内でLaravelの開発サーバーを起動 root@25a3630a398d:/var/www/html# php artisan serve php artisan serveは不要: Dockerを使用する場合、php artisan serveコマンドは通常必要ありません。 このコマンドは主に、Dockerを使用せずにローカル環境で開発する場合に便利です。