LaravelをNginxサーバーとMySQLデータベースで実行するためのDocker Compose設定について、以下に完全かつ包括的なガイドを提供します。このガイドでは、Docker Composeを使用して、ローカル開発環境でLaravelのプロジェクトをセットアップする方法を詳述します。
必要な環境
- Docker
- Docker Compose
- Laravelプロジェクトの作成経験があること
1. DockerとDocker Composeのインストール
まず、DockerとDocker Composeをインストールしていない場合は、公式サイトからインストールします。
インストール後、以下のコマンドで正常にインストールされたか確認します。
bashdocker --version docker-compose --version
2. Laravelプロジェクトの作成
Laravelプロジェクトをまだ作成していない場合は、以下のコマンドで新規に作成します。
bashcomposer create-project --prefer-dist laravel/laravel my-laravel-app
cd my-laravel-app
これで、my-laravel-app
というディレクトリ内にLaravelのプロジェクトが作成されます。
3. Docker Compose設定ファイルの作成
次に、プロジェクトのルートディレクトリにdocker-compose.yml
という名前のファイルを作成します。このファイルで、Laravelアプリケーション、Nginxサーバー、MySQLデータベースの設定を行います。
docker-compose.yml
の作成
yamlversion: '3.8'
services:
# Laravelのアプリケーションコンテナ
app:
image: php:8.1-fpm
container_name: laravel-app
volumes:
- .:/var/www/html
networks:
- laravel-network
working_dir: /var/www/html
environment:
- PHP_DATE_TIMEZONE=Asia/Tokyo
depends_on:
- db
restart: always
# Nginxコンテナ
nginx:
image: nginx:latest
container_name: nginx
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- .:/var/www/html
ports:
- "80:80"
networks:
- laravel-network
depends_on:
- app
restart: always
# MySQLデータベースコンテナ
db:
image: mysql:5.7
container_name: mysql-db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel
MYSQL_USER: laravel_user
MYSQL_PASSWORD: laravel_password
volumes:
- dbdata:/var/lib/mysql
networks:
- laravel-network
restart: always
networks:
laravel-network:
driver: bridge
volumes:
dbdata:
driver: local
4. Nginx設定ファイルの作成
次に、プロジェクトのルートディレクトリにnginx.conf
という名前のファイルを作成します。このファイルで、NginxがLaravelのアプリケーションを正しく処理できるように設定します。
nginx.conf
の作成
nginxserver {
listen 80;
server_name localhost;
root /var/www/html/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass app:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
この設定により、NginxはLaravelのpublic
ディレクトリをルートとして扱い、PHPのリクエストをapp
コンテナのPHP-FPMに転送します。
5. Laravelの環境設定
次に、Laravelの.env
ファイルを更新して、MySQLデータベースの設定を行います。
.env
の編集
envDB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laravel_user DB_PASSWORD=laravel_password
ここで設定している内容は、先ほどのdocker-compose.yml
に記載したMySQLコンテナの環境設定と一致させます。
6. コンテナのビルドと起動
すべての設定が完了したら、次にDocker Composeを使用してコンテナをビルドし、起動します。
bashdocker-compose up -d
このコマンドを実行すると、必要なイメージがダウンロードされ、コンテナがバックグラウンドで起動します。起動した後、以下のコマンドでコンテナの状態を確認できます。
bashdocker-compose ps
7. アプリケーションの確認
ブラウザを開き、http://localhost
にアクセスして、Laravelアプリケーションが正しく動作しているか確認します。Laravelのウェルカムページが表示されれば、設定は成功です。
8. データベースの初期化
データベースのマイグレーションを実行して、必要なテーブルを作成します。以下のコマンドを実行します。
bashdocker-compose exec app php artisan migrate
これで、LaravelアプリケーションがMySQLデータベースと連携して動作する準備が整いました。
9. Laravelでの開発作業
Dockerコンテナ内で作業することができます。例えば、アプリケーションのコード変更を行い、docker-compose exec app
でコンテナ内に入って、Laravelのコマンドを実行することができます。
まとめ
このガイドでは、LaravelのアプリケーションをDocker Composeを使用して、NginxサーバーとMySQLデータベースで動作させる方法を解説しました。これにより、ローカル開発環境で簡単にLaravelアプリケーションをセットアップし、迅速に開発を進めることができます。Dockerを使うことで、環境構築が簡単になり、異なる環境でも安定した開発が可能になります。