docker-compose を使用して、シンプルな LAMP (Laravel、Apache、MySQL、PHP) 開発環境を構築します。
Windows(WSL2)、macOS(M1)、Linuxに対応。
事前準備として、以下のドキュメントを読み、必要なソフトウェア等をインストールしてください。
├── app
├── web
├── db
└── adminer
- php:8.3-fpm-bookworm:8.3-fpm-bookworm
- composer:2.7
- Node.js:18
- httpd:2.4.61-bookworm:2.4.61-bookworm
.
├── src # Laravelプロジェクトのルートディレクトリ
├── infra
│ └── docker
│ ├── mysql
│ │ ├── Dockerfile
│ │ └── my.cnf
│ └── apache
│ │ ├── Dockerfile
│ │ ├── httpd.conf
│ └── php
│ ├── Dockerfile
│ ├── entrypoint.sh
│ ├── php.deploy.ini
│ ├── php.development.ini
│ └── xdebug.ini
├── Makefile
└── compose.yaml
プロジェクトフォルダにGitクローンする
git clone https://xacro.backlog.jp/git/XACRO/docker-lamp.git .
以下のコマンドを実行
$ make create-project
# or...
$ mkdir -p src
$ docker compose build
$ docker compose up -d
$ docker compose exec app composer create-project --prefer-dist laravel/laravel .
$ docker compose exec app php artisan key:generate
$ docker compose exec app php artisan storage:link
$ docker compose exec app chmod -R 777 storage bootstrap/cache
$ docker compose exec app php artisan migrate:fresh
上記のコマンドがエラーなく終了したら http://localhost でアクセスできるようになるはず。
※最新のLaravelバージョンがインストールされます。
バージョンを指定したい場合の手順です。
プロジェクトフォルダにGitクローンする
git clone https://xacro.backlog.jp/git/XACRO/docker-lamp.git .
以下のコマンドを実行 ※php.8.2と互換性のないバージョンを指定するとエラーが発生する可能性があります。 https://readouble.com/laravel/11.x/ja/releases.html
$ mkdir -p src
$ docker compose build
$ make up
$ docker compose exec app gosu $(whoami) bash -c "\
composer create-project --prefer-dist 'laravel/laravel=9.*' . && \
php artisan key:generate && \
php artisan storage:link && \
chmod -R 777 storage bootstrap/cache && \
php artisan migrate"
上記のコマンドがエラーなく終了したら http://localhost でアクセスできるようになるはず。
プロジェクトフォルダにGitクローンする
git clone https://xacro.backlog.jp/git/XACRO/docker-lamp.git .
src フォルダの配下に既存のLaravelプロジェクトを配置する
$ mkdir -p src
$ cp -r /path/to/your/laravel-project src
# or...
git clone https://github.com/[account name]/[repository name].git ./src
以下のコマンドを実行
$ make install
# or...
$ docker compose build
$ docker compose up -d
$ docker compose exec app composer install
$ docker compose exec app cp .env.example .env
$ docker compose exec app php artisan key:generate
$ docker compose exec app php artisan storage:link
$ docker compose exec app chmod -R 777 storage bootstrap/cache
$ docker compose exec app php artisan migrate:fresh
上記のコマンドがエラーなく終了したら http://localhost でアクセスできるようになるはず。
※プロジェクトの構成によっては、追加の設定が必要な場合があります。
make
コマンドを使用した場合のみ、ホストユーザーの UID、GID、および USERNAME をコンテナー実行ユーザーと同じにすることができます。
docker compose
コマンドで直接実行した場合は、ホストユーザーとコンテナー実行ユーザーが異なるため、ファイルのパーミッションが正しく設定されない可能性があります。
# コンテナを起動する
$ make up
# or...
$ docker compose up -d
# コンテナを終了する
$ make down
# or...
$ docker compose down
# コンテナ、イメージ、ボリュームを破棄する
$ make destroy
# or...
$ docker compose down --rmi all --volumes
# コンテナ、ボリュームを破棄する
$ make down-v
# or...
$ docker compose down --volumes
$ make app
docker compose exec app gosu username bash
username@a5a88db461e9:/var/www/html$
$ docker compose exec app bash
root@a5a88db461e9:/var/www/html#
make app
で app コンテナにログインした後、以下のコマンドを実行する。
username@a5a88db461e9:/var/www/html$ npm install
# or...
username@a5a88db461e9:/var/www/html$ npm run dev
$ make sql
# or...
$ docker compose exec db bash -c 'mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DATABASE'
# migrate
$ make migrate
# or...
docker compose exec app php artisan migrate
# all drop table & migrate & seeding
$ make fresh
# or...
docker compose exec app php artisan migrate:fresh --seed
# seeding
$ make seed
# or...
docker compose exec app php artisan db:seed
$ make test
# or...
docker compose exec app php artisan test
http://localhost:8888 でデータベース管理ツールadminerにアクセスできます。 ログイン情報は以下の通りです。
username: root
password: password
database: laravel
WSLのファイルをVSCodeで編集できるようにするために、拡張プラグインWSLを入れる。
-
vagrantの環境を継続して使用したい場合は、Virtual Boxのバージョンをv6.1にアップデートしてください。
-
上記ドキュメントの中で不明点や間違っている点などあれば、遠慮なくご指摘ください。