2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Docker ComposeでLaravel開発環境を構築その弐

Last updated at Posted at 2020-09-30

前回、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

ブラウザで動作確認

無題.png

コンテナ削除

[Mac]$ docker-compose down --rmi all --volumes

※参考
《滅びの呪文》Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去する便利コマンド

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?