Laravel 用の Docker Compose (Nginx、MySQL、PHP) です。
- Nginx
- MySQL
- PHP
- Composer
- Node.js
本ドキュメントで例として作成するプロジェクト名を blog
とします。
blog
という名前のディレクトリへ、必要とするパッケージが全部揃った、真新しい Laravel をインストールします。
次のようなディレクトリ構成で使用します。
.
└── app
├── docker_lemp_laravel_blog
└── blog
同一の PC に、複数の本リポジトリを導入する可能性を考慮して、 git clone
時は別名とするのがベターです。
mkdir app
cd app/
git clone https://github.com/oki2a24/docker_lemp_laravel.git docker_lemp_laravel_blog
cd docker_lemp_laravel_blog
cp env-example .env
APP_CODE_PATH_HOST
の値を設定します。この名前は、Laravel のプロジェクト名となります。
app/
に作成するディレクトリ名となりますので、今回の例の場合は次のように編集します。
APP_CODE_PATH_HOST=../blog/
開発環境を起動します。
docker-compose up -d
Laravel プロジェクトをインストールします。
補足です。
インストール 5.5 Laravel を見ると、blog
とディレクトリを指定していますが、ここでは .
と指定しています。
blog
と指定した場合、blog
ディレクトリを作成し、その中へ Laravel をインストールします。
.
と指定した場合、現在のディレクトリへ Laravel をインストールします。
.env
に APP_CODE_PATH_HOST=../blog/
と設定しているため、インストールコマンドを実行するディレクトリは docker_lemp_laravel_blog/../blog/
となります。
したがって、コマンド実行時は blog
ではなく .
を指定します。
docker-compose run --rm composer composer create-project --prefer-dist laravel/laravel . "5.5.*"
マイグレーションに先立ち、blog/.env
の設定を確認してください。
最低でも次の値を設定する必要があります。
DB_HOST=mysql # docker-compose.yml の services の値である mysql を設定
DB_DATABASE=default # docker_lanmp_laravel/.env の MYSQL_DATABASE 値を設定
DB_USERNAME=default # docker_lanmp_laravel/.env の MYSQL_USER 値を設定
DB_PASSWORD=secret # docker_lanmp_laravel/.env の MYSQL_PASSWORD 値を設定
コンテナに入り、Laravel のマイグレーションを実行してください。
docker-compose exec php_fpm bash
php artisan migrate
コンテナに入り、操作するには次のコマンドを実行します。 パスワードは、docker_lanmp_laravel/.env の MYSQL_ROOT_PASSWORD 値です。
docker-compose exec mysql bash
mysql -u root -p${MYSQL_ROOT_PASSWORD}
アセットのコンパイル(Laravel Mix) 5.5 Laravel を行う場合に実行するコマンドです。
npm
ではなく、 yarn
を使用することも可能です。
Windows の場合は、npm install
は失敗する場合があると思います。
その場合は、npm install --no-bin-links
を試してみてください。
これでも失敗する場合がありますが、 yarn install
を試してみてください。
なお、最初から yarn install
を使用しても問題ありません。
また、Node.js のイメージによってエラーが発生する場合があります。 次のエラーは node:10-alpine を使用した場合に発生しました。
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env variable.
このような場合は、alpine ではないイメージを使用してみてください。
実行する際の注意点として、blog
ディレクトリではなく、docker-compose.yml
のある、docker_lanmp_laravel
ディレクトリで実行してください。
インストール等は、blog
ディレクトリへ反映されます。
# Laravel Mix 依存パッケージのインストール
docker-compose run --rm node npm install
# Mixの実行
docker-compose run --rm node npm run dev
# アセット変更の監視
docker-compose run --rm node npm run watch