見出し画像

Laravel × Docker ローカル環境構築

あ~、プログラミング 勉強しよ って思っても、そもそものコーディングするためのローカル環境構築って意味わからん!

今回は 王道中の王道 PHPのフレームワーク Laravel 環境をDockerを使用して構築していきます。


前提

・Docker Desktop はインストールして、起動している状態。
 (こちら からインストールできるよ)
・PCはWindows

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

プロジェクトを管理するディレクトリを作成します。
PC内のどこでもOK!

コマンドプロンプトを開いて下記を実行します。

cd (任意の場所)
mkdir TalkBoard-back
cd TalkBoard-back

②必要なファイルの準備

ディレクトリ内に4つのファイルを用意して進めます。

  • docker-compose.yml

  • Dockerfile

  • nginx.conf

  • php.ini

docker-compose.yml 

services:
  app:
    build:
      context: .
    container_name: talkboard_app
    volumes:
      - .:/var/www/html
    working_dir: /var/www/html
    ports:
      - "8000:80"
    environment:
      - APP_PORT=8000
    depends_on:
      - db

  db:
    image: mysql:8.0
    container_name: talkboard_db
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: laravel
      MYSQL_USER: laravel
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    volumes:
      - dbdata:/var/lib/mysql

  nginx:
    image: nginx:latest
    container_name: talkboard_nginx
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      - .:/var/www/html
    ports:
      - "8080:80"
    depends_on:
      - app

volumes:
  dbdata:


Dockerfile

FROM php:8.2-fpm

# 必要なパッケージをインストール
RUN apt-get update && apt-get install -y \
    zip unzip curl libpng-dev libonig-dev libxml2-dev \
    && docker-php-ext-install pdo_mysql mbstring gd

# Composer をインストール
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# 作業ディレクトリを設定
WORKDIR /var/www/html

nginx.conf

server {
    listen 80;

    server_name localhost;

    root /var/www/html/public;

    index index.php index.html;

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

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

    location ~ /\.ht {
        deny all;
    }
}

php.ini

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
display_errors = On
display_startup_errors = On
error_reporting = E_ALL


③Laravelインストール

コンテナを起動してLaravelプロジェクトを作成します。

コマンドプロンプトで下記を実行!

docker-compose up -d

docker exec -it talkboard_app bash
composer create-project --prefer-dist laravel/laravel .


④権限の設定

現段階で http://localhost:8080 にアクセスすると「権限がどうたらこうたら~~~」みたいなエラー画面になると思うのでファイルの権限を修正します。

コマンドプロンプトで下記を実行!

chmod -R 775 storage bootstrap/cache
chown -R www-data:www-data .


④コンテナ再起動

コンテナを再起動し、ブラウザで http://localhost:8080 にアクセスします。

コマンドプロンプトで下記を実行!

docker-compose down
docker-compose up -d


ウェルカムページが表示されれば成功!!



★追記

各ファイルの役割と効果について

docker-compose.yml

  • 概要: Docker Composeを使用して複数のコンテナを一括で定義・管理する設定ファイルです。

  • 役割: Laravelアプリケーション(PHP-FPM)、MySQLデータベース、Nginx(Webサーバー)の各サービスを設定します。

  • 効果: サービス間の連携(例: PHPとMySQLの通信)やボリューム(データ永続化)の設定を簡単に行えます。

  • :

    • PHPアプリケーション用のコンテナ定義

    • データベースの環境変数設定(ユーザー名、パスワードなど)

    • Nginxを介したリクエストのルーティング


Dockerfile

  • 概要: アプリケーションを動作させる環境(コンテナ)を構築するための設定ファイルです。

  • 役割: PHP環境を構築し、Laravelを動作させるのに必要な拡張機能やツールをインストールします。

  • 効果: Laravelの依存関係を満たすPHP環境をカスタマイズして構築できます。

  • :

    • pdo_mysql や mbstring のようなPHP拡張機能のインストール

    • Composer(PHPの依存関係管理ツール)のセットアップ

    • 作業ディレクトリ(Laravelのソースコード配置場所)の設定


nginx.conf

  • 概要: Nginx(Webサーバー)の設定ファイルです。

  • 役割: HTTPリクエストを適切に処理し、PHP-FPM(Laravelアプリケーション)に転送します。

  • 効果: Laravelのルーティングを動作させるための設定を行います。

  • :

    • / へのリクエストを index.php に転送する

    • 静的ファイル(CSSやJS)を直接提供する

    • セキュリティ設定(.htファイルへのアクセス禁止など)


php.ini

  • 概要: PHPの動作設定を記述するファイルです。

  • 役割: Laravelアプリケーションに必要なPHPの設定(メモリ制限、エラー表示など)を調整します。

  • 効果: Laravelが適切に動作し、デバッグやパフォーマンスを向上させる環境を整備します。

  • :

    • memory_limit の拡張(メモリ不足エラー防止)

    • display_errors をオンにして開発時のエラーメッセージを表示

    • ファイルアップロードサイズの設定(upload_max_filesize)




いいなと思ったら応援しよう!