Dockerで簡単に始める!Laravel開発環境を素早く構築する手順ガイド

Laravel入門

LaravelはPHPベースの人気のあるフレームワークであり、開発環境を設定するために多くの手順が必要になります。しかし、Dockerを使用すると、このプロセスを単純化し、一貫性と移植性のある開発環境を提供できます。このガイドでは、Dockerを用いてLaravelの開発環境を迅速に構築する方法を詳しく説明します。

Dockerとは?

Dockerは、アプリケーションをコンテナ化するためのオープンプラットフォームで、必要なすべてのファイル(コード、ランタイム、ライブラリ、設定)をパッケージ化します。これにより、開発環境を簡単に共有でき、異なる環境間での動作の一貫性を保証します。

必要なツールのインストール

LaravelをDockerで使用するには、まずいくつかのツールが必要です。

  1. Docker Desktop: これはDockerの中心的なプラットフォームで、コンテナをローカルで作成、管理するためのデスクトップアプリケーションです。
  2. Docker Compose: マルチコンテナアプリケーションを定義して実行するためのツールです。

これらを公式サイトからインストールし、システムにセットアップします。

プロジェクトディレクトリの準備

  1. 新しいディレクトリを作成します。これはプロジェクトのルートディレクトリとして機能します。

    mkdir laravel-docker
    cd laravel-docker
    
  2. Laravelプロジェクトを作成します。もしComposerがインストールされていれば以下のコマンドを使うことができます。

    composer create-project --prefer-dist laravel/laravel my-project
    

Dockerファイルの設定

次に、Dockerを使用してLaravel環境を設定するために必要なファイルを作成します。

Dockerfile

このファイルはアプリケーションの実行環境を定義します。

FROM php:8.0-fpm

RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    zip \
    unzip \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install gd

RUN docker-php-ext-install pdo pdo_mysql

WORKDIR /var/www

COPY . /var/www

RUN chown -R www-data:www-data /var/www

docker-compose.yml

このファイルを使って複数のコンテナを管理します。ここではWebサーバーやデータベースを定義します。

version: '3.8'
services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    image: laravel_app
    container_name: app
    restart: unless-stopped
    working_dir: /var/www
    volumes:
      - .:/var/www
    networks:
      - app-network

  web:
    image: nginx:alpine
    container_name: web
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - .:/var/www
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
    networks:
      - app-network

  db:
    image: mysql:5.7
    container_name: db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: laravel
      MYSQL_USER: laravel
      MYSQL_PASSWORD: password
    volumes:
      - dbdata:/var/lib/mysql
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

volumes:
  dbdata:
    driver: local

nginx.conf

Nginxはウェブサーバーとして使用され、Laravelアプリケーションへのリクエストをサポートします。

server {
    listen 80;
    index index.php index.html;
    root /var/www/public;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass app:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_index index.php;
    }
}

開発環境の起動

docker-composeを使用して環境を起動します。

docker-compose up -d

このコマンドはバックグラウンドでコンテナを起動し、あなたのLaravelアプリケーションがhttp://localhost:8080で利用できるようになります。

データベース接続の設定

Laravelが正しく動作するためには、.envファイルを編集してデータベース接続を設定する必要があります。

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=password

開発の開始

設定が完了したら、通常のLaravel開発作業を開始できます。例えば、マイグレーションを実行するには以下のコマンドを使用します。

docker-compose exec app php artisan migrate

これで、Dockerを使ったLaravel開発環境が整いました。コードを変更するとホットリロードされ、すぐに反映されます。

まとめ

Dockerを使用することで、Laravelの開発環境を迅速かつ簡単に構築できます。この環境は開発を行うマシンに依存せず、チームメンバーとの共有も容易です。シンプルな設定ファイルを用いることで、複数の開発環境における一貫性も保てます。ぜひこのガイドを参考にして、効率的な開発環境を構築してください。

レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする

コメント