Laradockで構築するLaravel Webアプリ開発環境
要望
- Laravel Web アプリの開発環境を簡単に構築できるようしたい
- MySQL、Redis 等のミドルウェアとの連携を、ローカル開発環境で気兼ねなく試したい
- けど、DockerFile(docker-compose.yml)をゴリゴリ書きたくない
- 無論、マシンをあまり汚したくない。
必要なもの
- Docker Desktop
- Git
構成
- Laravel : 6.x
- PHP : 7.4 系
- リバースプロキシ:nginx
- DB:MySQL 5.7.x
- DB 管理ツール : phpMyAdmin
ディレクトリ構成
my_project ←プロジェクトルート(任意の名前を設定)
├── laradock ←Laradockディレクトリ
└── myapp ←Laravelアプリケーション(任意の名前を設定)
構築手順
1. プロジェクトルートディレクトリ作成
mkdir my_project
2. プロジェクトルートディレクトリ直下に、Laradock をクローン
cd project_root
git clone https://github.com/Laradock/laradock.git
以下のように出力されたら、Laradock のクローン完了。
Cloning into 'laradock'...
remote: Enumerating objects: 11160, done.
remote: Total 11160 (delta 0), reused 0 (delta 0), pack-reused 11160
Receiving objects: 100% (11160/11160), 9.95 MiB | 2.11 MiB/s, done.
Resolving deltas: 100% (6043/6043), done.
プロジェクトルートディレクトリ直下が以下のような構成になっている事を確認。
my_project
└── laradock
3. .env ファイル作成
Laradock の設定(インストールするライブラリ、ミドルウェア、PHP のバージョン等)は、
.env ファイルにて行います。
すでにテンプレートが用意されているので。テンプレートをコピーして編集します。
cd laradock
cp env-example .env
4. .env ファイル編集
テキストエディタで.env ファイルを開き、以下のように編集します。
- データ保存先ディレクトリ
DATA_PATH_HOST=./data
- Docker コンテナ名のプレフィックス
COMPOSE_PROJECT_NAME=laradock_my_project
注:my_project は任意のプロジェクト名
- PHP のバージョン
PHP_VERSION=7.4
- インストールするライブラリの設定
npm build 時のエラー回避のため、以下のように設定
WORKSPACE_INSTALL_PYTHON=true
...
WORKSPACE_INSTALL_LIBPNG=true
XDEBUG が必要であれば、以下のように設定
WORKSPACE_INSTALL_XDEBUG=true
...
PHP_FPM_INSTALL_XDEBUG=true
- MySQL のバージョン
MYSQL_VERSION=5.7
5. Docker コンテナのビルド、起動
laradock ディレクトリ直下で以下のコマンドを実行し、
コンテナのビルド〜起動まで実行します。
初回は少々時間かかります。(大体 15 分くらい)
docker-compose up -d nginx mysql phpmyadmin
以下のように出力されれば、コンテナの生成は成功です。
...
Creating laradock_my_project_docker-in-docker_1 ... done
Creating laradock_my_project_mysql_1 ... done
Creating laradock_my_project_workspace_1 ... done
Creating laradock_my_project_phpmyadmin_1 ... done
Creating laradock_my_project_php-fpm_1 ... done
Creating laradock_my_project_nginx_1 ... done
以下のコマンドで、コンテナの起動状況を確認します。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9303ce3b4c0f laradock_my_project_nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 0.0.0.0:80-81->80-81/tcp, 0.0.0.0:443->443/tcp laradock_my_project_nginx_1
c20a4a64837b laradock_my_project_php-fpm "docker-php-entrypoi…" 7 minutes ago Up 7 minutes 9000/tcp laradock_my_project_php-fpm_1
2a821cf1e1ea laradock_my_project_phpmyadmin "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 0.0.0.0:8081->80/tcp laradock_my_project_phpmyadmin_1
f8942f344aef laradock_my_project_workspace "/sbin/my_init" 7 minutes ago Up 7 minutes 0.0.0.0:3000-3001->3000-3001/tcp, 0.0.0.0:4200->4200/tcp, 0.0.0.0:8080->8080/tcp, 0.0.0.0:2222->22/tcp, 0.0.0.0:8001->8000/tcp laradock_my_project_workspace_1
7bd9a312b284 laradock_my_project_mysql "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp laradock_my_project_mysql_1
9cb3b4278162 docker:19.03-dind "dockerd-entrypoint.…" 7 minutes ago Up 7 minutes 2375-2376/tcp laradock_my_project_docker-in-docker_1
生成したコンテナが全てリストアップされていれば、コンテナの起動成功です。
6. Laravel プロジェクトの作成
laradock ディレクトリ直下で、以下のコマンドを実行して WorkSpace コンテナにログインします。
docker-compose exec --user=laradock workspace bash
laradock@f8942f344aef:/var/www$
プロンプトが表示されれば、ログイン完了です。
次に、以下のコマンドを実行して、Laravel プロジェクトを作成します。
しばらくかかります。(5 分くらい)
composer create-project laravel/laravel myapp --prefer-dist "6.*"
以下のように出力されれば、Laravel プロジェクトの作成は完了です。
...
Discovered Package: facade/ignition
Discovered Package: fideloper/proxy
Discovered Package: laravel/tinker
Discovered Package: nesbot/carbon
Discovered Package: nunomaduro/collision
Package manifest generated successfully.
65 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
> @php artisan key:generate --ansi
Application key set successfully.
プロジェクトルートディレクトリ配下が、
以下のような構成になっている事を確認します。
my_project
├── laradock
└── myapp
7. Laradock の設定修正
Laradock の.env ファイルを以下のように修正します。
APP_CODE_PATH_HOST=../myapp
この修正を反映するため、Docker コンテナを一旦停止し、再度起動します。
docker-compose stop
topping laradock_my_project_nginx_1 ... done
Stopping laradock_my_project_php-fpm_1 ... done
Stopping laradock_my_project_phpmyadmin_1 ... done
Stopping laradock_my_project_workspace_1 ... done
Stopping laradock_my_project_mysql_1 ... done
Stopping laradock_my_project_docker-in-docker_1 ... done
docker-compose up -d nginx mysql phpmyadmin
最後に、ブラウザから http://localhost にアクセスし、
以下のように表示されれば開発環境構築完了です。
お疲れさまでした。
Discussion