サーバーテンプレートの続きです。今回は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.yml
と Dockerfile
が作成できたら、以下のコマンドで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.yml
の backend
に実行コマンドを追記します。
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のサーバーテンプレート作成は終わります。この方法を活用して、効率的に開発環境を整えてみてください。
コメント