前回、Docker ComposeでLaravel環境を構築してみたが、Laravelの扱いに困った。
Docker ComposeでLaravel開発環境を構築その壱
結局コンテナに入ってLaravelインストールしたけど、、、ちょっとイマイチ。
考えた結果、docker-compose.yml達と一緒にLaravelもリポジトリ管理すれば良いんじゃないかと思った。
うん、多分コレが一番!っていうか、コレしかない!!
マシンスペック
- Mac mini 2018
- macOS Catalina(10.15.x)
- Intel Core-i7 3.2GHz 6コア
- メモリ 32GB
- SSD 512GB
Docker環境
- Nginx 最新版
- PHP(PHP-FPM)7.2.x
- MySQL 5.7.x
- Composer 最新版
- Laravel 5.6.x
やること
- Docker ComposeでLaravel環境構築
補足
各環境を行ったり来たりするので、下記のように記載します。
[Mac]$ MacのターミナルでMac内の作業
[PHP]$ MacのターミナルからPHPコンテナに接続して作業
docker-compose.ymlを編集
services:
nginx:
・・・
volumes:
- ~/MountPoint/docker/home:/home/docker
・・・
php:
・・・
volumes:
- ~/Work/MountPoint/docker/home:/home/docker
・・・
db:
volumes:
- ~/Work/MountPoint/docker/db/data:/var/lib/mysql
・・・
マウントポイントはコンテナファイル達から切り離していたけど、同ディレクトリにする為、下記に変更。
services:
nginx:
・・・
volumes:
- ./src:/home/docker
・・・
php:
・・・
volumes:
- ./src:/home/docker
・・・
db:
volumes:
- ./db:/var/lib/mysql
・・・
.gitignoreの編集
- /var/lib/mysqlのマウントは不要。
- /home/docker/laravel以外のマウントは不要。
/db
/src/*
!/src/laravel
Laravelの準備
上記までで雛形になるけど、せっかくなのでLaravelも用意。
MacとコンテナのPHPバージョンが違ったので、コンテナ内で作業。
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ composer create-project --prefer-dist laravel/laravel laravel "5.6.*"
[PHP]$ cd laravel
[PHP]$ composer require --dev barryvdh/laravel-ide-helper
[PHP]$ composer require --dev squizlabs/php_codesniffer
[PHP]$ mkdir bin
[PHP]$ vi bin/clear-laravel.sh
---
#!/bin/bash
php artisan view:clear
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan clear-compiled
php artisan config:cache
composer dump-autoload
php artisan ide-helper:generate
php artisan ide-helper:models -N
php artisan ide-helper:meta
find . -name '._.DS_Store' -type f -ls -delete
---
:wq
[PHP]$ vi .env.example
---
:%s/DB_HOST=127.0.0.1/DB_HOST=mysql/g
:%s/DB_DATABASE=homestead/DB_DATABASE=hoge/g
:%s/DB_USERNAME=homestead/DB_USERNAME=fuga/g
:%s/DB_PASSWORD=secret/DB_PASSWORD=docker#DOCKER1234/g
---
:wq
完成!!
https://github.com/bobtabo/docker2
使い方
Laravel環境の準備
[Mac]$ cd <任意のディレクトリ>
[Mac]$ git clone https://github.com/bobtabo/docker2.git docker
[Mac]$ cd docker
[Mac]$ docker-compose up -d
・・・
Creating mysql ... done
Creating php ... done
Creating nginx ... done
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ pwd
/home/docker
[PHP]$ cd laravel
[PHP]$ composer install
[PHP]$ chmod -R 777 storage
[PHP]$ chmod -R 777 bootstrap/cache
[PHP]$ cp -p .env.example .env
[PHP]$ php artisan key:generate
[PHP]$ chmod 755 bin/clear-laravel.sh
[PHP]$ bin/clear-laravel.sh
[PHP]$ php artisan migrate:fresh --seed
動作確認(Macのhosts編集)
[Mac]$ sudo vi /private/etc/hosts
★下記を点線内を追記
---
127.0.0.1 laravel.local
---
:wq
ブラウザで動作確認
コンテナ削除
[Mac]$ docker-compose down --rmi all --volumes
※参考
《滅びの呪文》Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去する便利コマンド