開発運用

Laravel Docker Compose 設定方法

LaravelアプリケーションをDocker Composeを使ってコンテナ化する方法について、詳細かつ包括的に解説します。DockerとDocker Composeを使用することで、開発環境を簡単に構築・管理することができ、異なる環境間での一貫性を保ちながら開発が進められます。この記事では、LaravelをDocker Composeでセットアップする手順をステップバイステップで説明します。

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

まず、DockerとDocker Composeをインストールする必要があります。以下はその手順です。

Dockerのインストール

  1. Dockerの公式サイト(https://www.docker.com/get-started)からインストーラーをダウンロードし、インストールします。

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

    bash
    docker --version

    正常にインストールされていれば、Dockerのバージョンが表示されます。

Docker Composeのインストール

Docker Composeは、複数のコンテナを定義して管理するツールです。Docker Composeもインストールする必要があります。

  1. 以下のコマンドを使ってインストールします。

    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
  2. インストール後、以下のコマンドでバージョンを確認します。

    bash
    docker-compose --version

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

Dockerを使用してLaravelアプリケーションをセットアップする前に、まずはLaravelのプロジェクトを作成します。

  1. LaravelのインストールにはComposerが必要です。もしまだインストールしていない場合は、以下のコマンドを使ってインストールします。

    bash
    curl -sS https://getcomposer.org/installer | php
  2. 次に、Laravelプロジェクトを作成します。

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

    これで「my-laravel-app」という名前のLaravelプロジェクトが作成されます。

3. Dockerfileの作成

Laravelアプリケーションをコンテナ化するために、Dockerfileを作成します。このファイルは、アプリケーションが動作するための環境を構築するための設定を定義します。

  1. my-laravel-appディレクトリ内にDockerfileを作成します。

    dockerfile
    # 使用するベースイメージ FROM php:8.1-fpm # 必要な拡張をインストール RUN apt-get update && apt-get install -y libpng-dev libjpeg-dev libfreetype6-dev zip git \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install gd pdo pdo_mysql # Composerをインストール COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer # 作業ディレクトリの設定 WORKDIR /var/www # Laravelアプリケーションをコピー COPY . . # 権限の設定 RUN chown -R www-data:www-data /var/www

このDockerfileは、PHPと必要な拡張、そしてLaravelに必要なライブラリをインストールします。Composerもインストールして、アプリケーションの依存関係を管理できるようにしています。

4. docker-compose.ymlの作成

次に、Docker Composeを使用してLaravelのサービスを定義します。docker-compose.ymlファイルを作成し、必要なコンテナ(アプリケーション、データベースなど)を設定します。

  1. my-laravel-appディレクトリ内にdocker-compose.ymlを作成します。

    yaml
    version: '3.8' services: app: build: context: . dockerfile: Dockerfile container_name: laravel-app working_dir: /var/www volumes: - .:/var/www networks: - laravel-network ports: - "8000:8000" db: image: mysql:5.7 container_name: mysql-db environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: laravel MYSQL_USER: user MYSQL_PASSWORD: password volumes: - db-data:/var/lib/mysql networks: - laravel-network volumes: db-data: networks: laravel-network: driver: bridge

この設定で、appサービスがLaravelアプリケーションを実行するコンテナ、dbサービスがMySQLデータベースのコンテナになります。portsオプションで、ホストのポート8000をコンテナのポート8000にマッピングし、ブラウザからhttp://localhost:8000でLaravelアプリケーションにアクセスできるようにしています。

5. .envファイルの設定

Laravelの.envファイルはデータベース接続情報などを管理する重要なファイルです。Docker ComposeのMySQLコンテナと接続するために、以下のように設定します。

  1. .envファイルを開き、以下の設定を変更します。

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

ここで、DB_HOSTdocker-compose.ymlで設定したサービス名(この場合はdb)に一致させる必要があります。

6. コンテナのビルドと起動

ここまで準備が整ったら、Docker Composeを使ってコンテナをビルドし、アプリケーションを起動します。

  1. 以下のコマンドでコンテナをビルドします。

    bash
    docker-compose build
  2. 次に、コンテナを起動します。

    bash
    docker-compose up -d

    -dオプションをつけることで、バックグラウンドでコンテナが起動します。

7. アプリケーションのセットアップ

コンテナが起動したら、Laravelの依存関係をインストールし、マイグレーションを実行します。

  1. Laravelのコンテナに接続します。

    bash
    docker-compose exec app bash
  2. Composerを使って依存関係をインストールします。

    bash
    composer install
  3. マイグレーションを実行してデータベースを設定します。

    bash
    php artisan migrate

これで、Docker環境内でLaravelアプリケーションが動作する準備が整いました。

8. アクセス確認

ブラウザでhttp://localhost:8000にアクセスし、Laravelのウェルカムページが表示されれば、セットアップが成功しています。

終わりに

このように、Docker Composeを使ってLaravelアプリケーションをコンテナ化することで、開発環境のセットアップが簡単になり、環境に依存しない一貫したアプリケーション開発が可能となります。Dockerを使うことで、開発者はアプリケーションの動作環境を素早く構築でき、チームでの開発やデプロイが効率的になります。

Back to top button