[開発] WSLとDockerを使ったLaravel・MySQLサーバー構築ガイド

Docker

サーバーテンプレートの続きです。今回はDockerを使ってLaravelとMySQLの環境を構築していきます。
前回の記事はこちら:[開発]WSL+Docker+Reactでサーバー構築

PHPはバージョン8、Laravelは最新版、MySQLはバージョン8を使用します。

ステップ1: バックエンドディレクトリの作成

まずは前回作成した環境にVisualStudioCodeでアタッチします。
アタッチしたらエクスプローラーから backend ディレクトリを作成します。

ステップ2: docker-compose.yml への追記

次に、docker-compose.yml ファイルへLaravelとMySQLの定義を追記します。

version: '3.8'
services:
  frontend:
    build:
      context: ./
      dockerfile: ./Dockerfile_frontend
    container_name: sample_frontend
    volumes:
      - "./frontend:/workspace"
    ports:
      - "3000:3000"
    tty: true
    command: sh -c "npm run dev"

# ここから下を追記

  backend:
    build:
      context: ./
      dockerfile: ./Dockerfile_backend
    container_name: sample_backend
    volumes:
      - "./backend:/var/www"
    image: laravel-app
    ports:
      - "8000:8000"
    tty: true
    command: sh -c "composer install && php artisan serve --host=0.0.0.0 --port=8000"
    depends_on:  # backendはdbが起動してから実行
      - db

  db:
    image: mysql:8
    environment:
      MYSQL_DATABASE: laravel
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      MYSQL_ROOT_PASSWORD: rootpassword
    ports:
      - "3306:3306"
    volumes:
      - "./dbdata:/var/lib/mysql"

dbdata ディレクトリを作成します。ただし、空のままだとgitに登録出来ないため、空のままでもgitに登録できるように .gitkeep を作成します。

mkdir dbdata
touch dbdata/.gitkeep

ステップ3: Dockerfile の作成

続いて、Dockerfile を作成します。このファイルは、Laravelアプリケーションを実行するためのDockerイメージを構築するために使用します。

FROM php:8-fpm
WORKDIR /var/www/laravel-app

# Laravelの必要な拡張機能をインストール
RUN apt-get update && apt-get install -y \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    libzip-dev \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd pdo pdo_mysql zip

# Composerのインストール
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

ステップ4: Dockerコンテナの起動

docker-compose.ymlDockerfile が作成できたら、以下のコマンドでDockerコンテナを起動します。

docker-compose up -d

ステップ5: Laravelの環境構築

Dockerを起動できたらVisualStudioCodeでコンテナにアタッチしてLaravelの環境を構築していきます。

cd /var/www

# Laravelのプロジェクトを新規作成
composer create-project --prefer-dist laravel/laravel laravel-app

次は、Docker起動時にLaravelが自動起動するように docker-compose.ymlbackend に実行コマンドを追記します。

    command: sh -c "composer install && php artisan serve --host=0.0.0.0 --port=8000"

ステップ6: Dockerコンテナの再起動

Dockerを一度停止し、再度立ち上げます。

# Dockerを停止
docker-compose down
# Dockerを再度起動
docker-compose up -d

これで、LaravelがDocker上で自動で起動されます。http://localhost:8000 にアクセスしてこのような画面が表示されていれば起動完了です。

ステップ6: Dockerコンテナの再起動

最後にLaravelのファイルの権限変更とdbdata内のデータを無視する設定を追加してGithubにあげます。

# 権限を修正
sudo chown okzaq:okzaq ./ -R

# 今回追加したファイルをgitに登録、dbdataディレクトリ内のデータは無視するように.gitignoreを追加
git add backend/
git add dbdata/
git add dbdata/.gitkeep
echo "/*" > dbdata/.gitignore
git add dbdata/.gitignore

# Githubにあげる
git commit -m "Laravel+MySQL環境を構築"
git push

以上で、Dockerを使ったReact+Laravel+MySQLのサーバーテンプレート作成は終わります。この方法を活用して、効率的に開発環境を整えてみてください。

コメント

タイトルとURLをコピーしました