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が正しくインストールされていることを確認します。
bashdocker --version
Docker Composeのインストール
Docker Composeも同様にインストールします。最新バージョンのインストールは、以下のコマンドをターミナルで実行します。
bashsudo 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
インストールが完了したら、以下のコマンドでインストールされたバージョンを確認します。
bashdocker-compose --version
2. Laravelプロジェクトの作成
次に、Laravelの新しいプロジェクトを作成します。まず、Composerがインストールされていることを確認してください。インストールされていない場合は、公式サイトからComposerをインストールしてください。
新しいLaravelプロジェクトを作成するには、以下のコマンドを実行します。
bashcomposer create-project --prefer-dist laravel/laravel laravel-docker
これで、「laravel-docker」という名前のディレクトリにLaravelのプロジェクトが作成されます。
3. Docker Composeの設定
次に、Docker Composeを使用してLaravelの開発環境を構築します。プロジェクトのルートディレクトリ(laravel-docker
)内に、以下のファイルを作成します。
docker-compose.yml
の作成
このファイルでは、必要なサービス(Webサーバー、データベースなど)の設定を行います。以下は、Laravelを実行するための基本的な設定例です。
yamlversion: '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の設定ファイルを作成します。
bashmkdir nginx
その後、nginx/default.conf
というファイルを作成し、以下の内容を記述します。
nginxserver {
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
ファイルを編集し、データベースの接続設定を変更します。
envDB_CONNECTION=mysql DB_HOST=db DB_PORT=3306 DB_DATABASE=laravel DB_USERNAME=laraveluser DB_PASSWORD=laravelpassword
5. コンテナの起動
docker-compose.yml
とNginxの設定が整ったら、以下のコマンドでDocker Composeを使用してコンテナを起動します。
bashdocker-compose up -d
これにより、バックグラウンドでDockerコンテナが起動します。次に、Laravelのアプリケーションをセットアップします。
bashdocker-compose exec app bash
コンテナ内に入ったら、以下のコマンドを実行してLaravelの依存関係をインストールします。
bashcomposer install
その後、Laravelのキーを生成します。
bashphp artisan key:generate
最後に、マイグレーションを実行してデータベースを設定します。
bashphp artisan migrate
6. アプリケーションの確認
コンテナが正常に起動し、Laravelが設定されたら、ブラウザでhttp://localhost:8080
にアクセスして、Laravelのウェルカムページが表示されることを確認します。
7. Dockerコンテナの停止と削除
開発が終了したら、以下のコマンドでコンテナを停止および削除できます。
bashdocker-compose down
これで、LaravelのDocker Compose環境の構築が完了しました。
結論
Docker Composeを使用することで、Laravelの開発環境を簡単に設定できます。コンテナを使用することで、依存関係の管理が容易になり、プロジェクトを複数の環境で再現性高く動作させることができます。また、NginxやMySQLの設定もDocker Composeを使えば簡単に管理できるため、開発効率が大幅に向上します。