開発運用

Laravel Docker Compose 設定ガイド

LaravelのDocker Composeによるインストールと設定ガイド

Laravelは、PHPで開発された人気のあるフレームワークで、迅速な開発を支援する多くの機能を備えています。Docker Composeを使用すると、Laravelの開発環境を迅速に構築でき、アプリケーションの依存関係を効率的に管理できます。この記事では、LaravelをDocker Composeを使って設定する方法について、詳しく解説します。

1. DockerおよびDocker Composeのインストール

まず最初に、DockerとDocker Composeをシステムにインストールする必要があります。以下の手順に従ってください。

Dockerのインストール

公式Dockerのウェブサイトから、対応するOSに合わせてDockerをインストールします。

  • Windows: Docker Desktopをインストール
  • macOS: Docker Desktopをインストール
  • Linux: 各ディストリビューションに合わせたインストール手順を参考にしてください。

インストール後、ターミナルで以下のコマンドを実行し、Dockerが正しくインストールされていることを確認します。

bash
docker --version
Docker Composeのインストール

Docker Composeも同様にインストールします。最新バージョンのインストールは、以下のコマンドをターミナルで実行します。

bash
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose

インストールが完了したら、以下のコマンドでインストールされたバージョンを確認します。

bash
docker-compose --version

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

次に、Laravelの新しいプロジェクトを作成します。まず、Composerがインストールされていることを確認してください。インストールされていない場合は、公式サイトからComposerをインストールしてください。

新しいLaravelプロジェクトを作成するには、以下のコマンドを実行します。

bash
composer create-project --prefer-dist laravel/laravel laravel-docker

これで、「laravel-docker」という名前のディレクトリにLaravelのプロジェクトが作成されます。

3. Docker Composeの設定

次に、Docker Composeを使用してLaravelの開発環境を構築します。プロジェクトのルートディレクトリ(laravel-docker)内に、以下のファイルを作成します。

docker-compose.ymlの作成

このファイルでは、必要なサービス(Webサーバー、データベースなど)の設定を行います。以下は、Laravelを実行するための基本的な設定例です。

yaml
version: '3.8' services: # PHPコンテナの設定 app: image: php:8.1-fpm container_name: laravel-app working_dir: /var/www volumes: - .:/var/www networks: - laravel depends_on: - db # Nginxコンテナの設定 nginx: image: nginx:alpine container_name: laravel-nginx ports: - "8080:80" volumes: - ./nginx:/etc/nginx/conf.d - .:/var/www networks: - laravel depends_on: - app # MySQLコンテナの設定 db: image: mysql:5.7 container_name: laravel-db environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: laravel MYSQL_USER: laraveluser MYSQL_PASSWORD: laravelpassword volumes: - dbdata:/var/lib/mysql networks: - laravel volumes: dbdata: networks: laravel: driver: bridge

この設定では、以下の3つのサービスを定義しています:

  • app: Laravelアプリケーション用のPHP-FPMコンテナ
  • nginx: Nginxを使用して、Webサーバーとして機能させるコンテナ
  • db: MySQLデータベースのコンテナ
Nginxの設定ファイルの作成

nginxディレクトリを作成し、その中にNginxの設定ファイルを作成します。

bash
mkdir nginx

その後、nginx/default.confというファイルを作成し、以下の内容を記述します。

nginx
server { listen 80; server_name localhost; root /var/www/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$fastcgi_script_name; include fastcgi_params; } location ~ /\.ht { deny all; } }

4. .envファイルの設定

laravel-dockerディレクトリ内にある.envファイルを編集し、データベースの接続設定を変更します。

env
DB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laraveluser DB_PASSWORD=laravelpassword

5. コンテナの起動

docker-compose.ymlとNginxの設定が整ったら、以下のコマンドでDocker Composeを使用してコンテナを起動します。

bash
docker-compose up -d

これにより、バックグラウンドでDockerコンテナが起動します。次に、Laravelのアプリケーションをセットアップします。

bash
docker-compose exec app bash

コンテナ内に入ったら、以下のコマンドを実行してLaravelの依存関係をインストールします。

bash
composer install

その後、Laravelのキーを生成します。

bash
php artisan key:generate

最後に、マイグレーションを実行してデータベースを設定します。

bash
php artisan migrate

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

コンテナが正常に起動し、Laravelが設定されたら、ブラウザでhttp://localhost:8080にアクセスして、Laravelのウェルカムページが表示されることを確認します。

7. Dockerコンテナの停止と削除

開発が終了したら、以下のコマンドでコンテナを停止および削除できます。

bash
docker-compose down

これで、LaravelのDocker Compose環境の構築が完了しました。

結論

Docker Composeを使用することで、Laravelの開発環境を簡単に設定できます。コンテナを使用することで、依存関係の管理が容易になり、プロジェクトを複数の環境で再現性高く動作させることができます。また、NginxやMySQLの設定もDocker Composeを使えば簡単に管理できるため、開発効率が大幅に向上します。

Back to top button