開発運用

Laravel Docker Nginx MySQL 設定

LaravelをNginxサーバーとMySQLデータベースで実行するためのDocker Compose設定について、以下に完全かつ包括的なガイドを提供します。このガイドでは、Docker Composeを使用して、ローカル開発環境でLaravelのプロジェクトをセットアップする方法を詳述します。

必要な環境

  • Docker
  • Docker Compose
  • Laravelプロジェクトの作成経験があること

1. DockerとDocker Composeのインストール

まず、DockerとDocker Composeをインストールしていない場合は、公式サイトからインストールします。

インストール後、以下のコマンドで正常にインストールされたか確認します。

bash
docker --version docker-compose --version

2. Laravelプロジェクトの作成

Laravelプロジェクトをまだ作成していない場合は、以下のコマンドで新規に作成します。

bash
composer 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の作成

yaml
version: '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の作成

nginx
server { 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の編集

env
DB_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を使用してコンテナをビルドし、起動します。

bash
docker-compose up -d

このコマンドを実行すると、必要なイメージがダウンロードされ、コンテナがバックグラウンドで起動します。起動した後、以下のコマンドでコンテナの状態を確認できます。

bash
docker-compose ps

7. アプリケーションの確認

ブラウザを開き、http://localhostにアクセスして、Laravelアプリケーションが正しく動作しているか確認します。Laravelのウェルカムページが表示されれば、設定は成功です。

8. データベースの初期化

データベースのマイグレーションを実行して、必要なテーブルを作成します。以下のコマンドを実行します。

bash
docker-compose exec app php artisan migrate

これで、LaravelアプリケーションがMySQLデータベースと連携して動作する準備が整いました。

9. Laravelでの開発作業

Dockerコンテナ内で作業することができます。例えば、アプリケーションのコード変更を行い、docker-compose exec appでコンテナ内に入って、Laravelのコマンドを実行することができます。

まとめ

このガイドでは、LaravelのアプリケーションをDocker Composeを使用して、NginxサーバーとMySQLデータベースで動作させる方法を解説しました。これにより、ローカル開発環境で簡単にLaravelアプリケーションをセットアップし、迅速に開発を進めることができます。Dockerを使うことで、環境構築が簡単になり、異なる環境でも安定した開発が可能になります。

Back to top button