Docker環境を作ってみよう!・・・と思い立ったので、作ってみました。
Docker+Amazon LinuxでLaravel開発環境を構築
でも、OSイメージにインストールしまくるのは、Dockerの本来の使い方じゃないんだろうな。
ということで、Docker Composeでの環境構築を、コピペできるように纏めました。
マシンスペック
- 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
やること
- Docker Composeで環境構築
補足
各環境を行ったり来たりするので、下記のように記載します。
[Mac]$ MacのターミナルでMac内の作業
[PHP]$ MacのターミナルからPHPコンテナに接続して作業
前提
Dockerはインストール済み
コンテナ作成
コンテナ定義を作りました!
https://github.com/bobtabo/docker
[Mac]$ cd <任意のディレクトリ>
[Mac]$ git clone https://github.com/bobtabo/docker.git
[Mac]$ cd docker
[Mac]$ docker-compose up -d
・・・
Creating mysql ... done
Creating php ... done
Creating nginx ... done
作成されるホストOS(Mac)のマウントポイント
~/Work/MountPoint/docker/home -> /home/docker
~/Work/MountPoint/docker/db/data -> /var/lib/mysql
※参考
Concrete5 on Nginx + php7-fpm を docker-compose でやってみた
docker-compose を使って(なるべく)公式イメージで PHP 開発環境を作った
PHPの公式DockerイメージでUNIXソケット通信しようとして罠にハマるの巻
docker-composeでunixソケットを使った、Nginx、php-fpmコンテナを作る
Laravelのインストール
LaravelインストールをDockerfileに書くと、コンテナ起動時に毎回インストールが走るらしい。
どの記事を読んでもLaravelは別作業なのは、そういう事だったのか。
何か効率が良い方法はないものか、、、また今度考えよう。
ということで、コンテナの中に入って、Laravel環境を作成します。
[Mac]$ docker-compose exec --user 1000 php bash
[PHP]$ pwd
/home/docker
[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]$ chmod -R 777 storage
[PHP]$ chmod -R 777 bootstrap/cache
[PHP]$ vi .env
★DB設定を置換
:%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
[PHP]$ php artisan migrate
[PHP]$ php artisan db:seed
[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]$ chmod 755 bin/clear-laravel.sh
[PHP]$ bin/clear-laravel.sh
動作確認(Macのhosts編集)
[Mac]$ sudo vi /private/etc/hosts
★下記を点線内を追記
---
127.0.0.1 laravel.local
---
:wq
ブラウザで動作確認
コンテナ削除
[Mac]$ docker-compose down --rmi all --volumes
※参考
《滅びの呪文》Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去する便利コマンド