Windows環境にPHPとLaravelをセットアップし、Dockerで環境構築する手順

# Windows環境にPHPとLaravelをセットアップし、Dockerで環境構築する手順

この投稿は、WindowsにPHPをインストールし、Laravelアプリを作成、そしてDockerを使ってLaravelアプリを動かす手順の記録用です。

## 1. PHPのインストール手順

### 1-1. PHPのダウンロードと解凍

1. [PHP公式サイト](https://www.php.net/downloads)から最新のPHPをダウンロードします。  
2. ダウンロードしたZIPファイルを任意のフォルダに解凍します。例えば、`C:\php`フォルダを作成して、その中に解凍します。

### 1-2. PHPのパスを環境変数に設定

1. スタートメニューの検索バーに「環境変数」と入力し、「システム環境変数の編集」をクリック。
2. 「システムのプロパティ」ウィンドウが開いたら、「環境変数」ボタンをクリック。
3. 「システム環境変数」の「Path」を選択し、「編集」をクリック。
4. PHPの解凍先フォルダ（例: `C:\php`）のパスを追加。
5. 「OK」をクリックして設定を完了します。

### 1-3. PHPの動作確認

PowerShellまたはコマンドプロンプトを開き、以下のコマンドを実行してPHPがインストールされたか確認します。

```bash
php -v
```

PHPのバージョンが表示されればインストールは成功です。

---

## 2. Composerのインストール

### 2-1. Composerのインストール手順

1. [Composer公式サイト](https://getcomposer.org/download/)からWindows用インストーラーをダウンロード。
2. ダウンロードした`Composer-Setup.exe`を実行し、インストールウィザードに従ってComposerをインストール。
3. インストール中に「PHPのパス」を指定するように求められたら、先ほどインストールしたPHPのパス（例: `C:\php\php.exe`）を指定します。

### 2-2. Composerの動作確認

PowerShellを再起動し、以下のコマンドを実行してComposerが正しくインストールされたか確認します。

```bash
composer --version
```

Composerのバージョンが表示されれば成功です。

---

## 3. Laravelアプリの作成

### 3-1. Laravelプロジェクトを作成する

まず、PowerShellで作成したいディレクトリに移動します。例えば、`C:\projects`フォルダに移動するには以下のコマンドを使います。

```bash
cd C:\projects
```

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

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

これで、`my-laravel-app`という名前のフォルダにLaravelのファイル一式が作成されます。

---

## 4. Docker環境の設定

LaravelアプリをDocker上で動かすため、PHP-FPM、Xdebug、MySQL、Nginxを使用します。

### 4-1. Dockerfileを作成

`Dockerfile`を作成し、以下の内容を記述します。

```Dockerfile
# ベースイメージ
FROM php:8.2-fpm

# 必要なPHP拡張機能をインストール
RUN apt-get update && apt-get install -y \
    git \
    unzip \
    libzip-dev \
    && docker-php-ext-install zip pdo pdo_mysql

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

# Xdebugをインストール
RUN pecl install xdebug \
    && docker-php-ext-enable xdebug

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

# Laravelのコードをコピー
COPY . /var/www

# 権限設定
RUN chown -R www-data:www-data /var/www

# ポートを公開
EXPOSE 9000
```

### 4-2. Docker Composeファイルを作成

次に、`docker-compose.yml`を作成し、以下の設定を書き込みます。

```yaml
version: '3.8'

services:
  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: laravel_app
    volumes:
      - .:/var/www
    ports:
      - "9000:9000"
    networks:
      - laravel

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

  db:
    image: mysql:8
    container_name: mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: laravel
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
    networks:
      - laravel

networks:
  laravel:
    driver: bridge
```

### 4-3. Nginxの設定

`nginx/default.conf`というファイルを作成し、Nginxの設定を記述します。

```conf
server {
    listen 80;
    index index.php index.html;
    server_name localhost;
    root /var/www/public;

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

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

### 4-4. index.htmlの修正

表示したい文字（Hello World）を記述します。
```conf
<!DOCTYPE html>
<html>
    <head>
        <title>PHP Test</title>
    </head>
    <body>
        <?php echo '<p>Hello World</p>'; ?>
    </body>
</html>
```

---

## 5. DockerでLaravelアプリを立ち上げる

すべての設定が完了したら、以下のコマンドを実行してDockerを立ち上げます。

```bash
docker-compose up --build
```

`http://localhost:8080` にアクセスするとLaravelアプリが表示されるはずです。

---

## まとめ

1. **PHPのインストール**：PHPの環境変数を設定し、動作確認。
2. **Composerのインストール**：Composerをインストールし、動作確認。
3. **Laravelアプリの作成**：`composer create-project`で新規プロジェクトを作成。
4. **Docker環境の設定**：`Dockerfile`と`docker-compose.yml`を設定。
5. **アプリの起動**：`docker-compose up`でDockerを立ち上げ、Laravelを実行。

これでLaravelアプリがDocker上で動作します！