PHP Quest #9 【Docker on Vagrant 実践編】

こんにちは!プログラミングコーチのゆーやです。
今日は既存のDockerfileやVagrantfileを流用して簡単にLaravelの環境を作っていく手法について解説していきたいと思います。

Vagrantを用いて構築する仮想マシンや、Dockerを用いて構築する仮想コンテナは一度学習した前提で進めていくので、詳しい説明はしません。ご了承ください。

コーディングの詳細について知りたい方は『PHPHacks』で丁寧に解説しているので、そちらをご視聴くださいませ!!

各種ツールのインストール

Vagrant

VirtualBox

Git bash(Windowsの方向け)

Vagrantを用いてDocker動作環境を構築する

ソースコード

Vagrantを用いてdockerとdocker-compose、gitの使える仮想マシンを構築するコード群です。
*探求学園メンバー以外の使用を禁止します。

https://github.com/yuya-ishikawa-qa/docker-on-vagrant

初期準備(~/phpHacks/)

$ git clone https://github.com/yuya-ishikawa-qa/docker-on-vagrant.git
$ cd docker-on-vagrant
$ mkdir Docks

起動コマンド

$ vagrant up
$ vagrant ssh
[local-docker] docker -v
[local-docker] docker-compose -v
[local-docker] git --version

その他コマンド

VirtualBoxのバージョンが古く”vboxsf”のエラーが出たとき。

$ vagrant plugin install vagrant-vbguest

vagrant sshをしてもDocksがなく、データのマウントが正常にできていないとき。

$ vagrant reload
$ vagrant halt

Dockerを用いてLAMP(+Laravel)環境を構築する

ソースコード

Dockerを用いてLAMP環境と、Laravelアプリを起動することのできる仮想コンテナを構築するコード群です。
*探求学園メンバー以外の使用を禁止します。

https://github.com/yuya-ishikawa-qa/docker-laravel

初期準備(/home/vagrant/)

[local-docker] cd docks
[local-docker] git clone https://github.com/yuya-ishikawa-qa/docker-laravel.git
[local-docker] cd docker-laravel
[local-docker] mkdir lara-d
[local-docker] docker-compose build
[local-docker] docker-compose up -d
[local-docker] docker-compose stop
[local-docker] docker-compose down

その他コマンド

[local-docker] sudo groupadd docker
[local-docker] sudo gpasswd -a $USER docker
[local-docker] sudo systemctl restart docker
[local-docker] exit
$ vagrant ssh

Laravelアプリケーションの起動

Laravelアプリの初期生成

[local-docker] docker-compose exec web bash
[#html] composer create-project --prefer-dist laravel/laravel lara-d "5.8.*"
[#html] exit

編集箇所

①lara-dのデータマウント(docker-compose.yml)

②publicへのDocumentRoot(apache-php/apache.conf)

https://github.com/yuya-ishikawa-qa/docker-laravel/commit/3b4faa1007cd6b3e21a8c878119a8f1b5764e85d

再ビルド

[local-docker] docker-compose build
[local-docker] docker-compose up -d

ブラウザで確認

http://192.168.33.11 にアクセスして以下の画面が確認できれば完成
(http://192.168.33.11:8080 ではphpMyAdminに繋がります)

ipアドレスはVagrantfile、ポート番号はdocker-compose.ymlで設定

Laravelの環境設定

サンプルコード(Laravel掲示板)

Laravel掲示板のサンプルコードはこちら。まずLaravelアプリの完成版を触ってみたい方はお試しください。
*探求学園メンバー以外の使用を禁止します。

https://github.com/yuya-ishikawa-qa/laravel-bulletin-board

.envの設定例

⓪APP_URLはVagrantfileで設定したIPアドレス
①DB_HOST ②DB_PASSWORD ③DB_PASSWORD は docker-compose.ymlで設定した環境変数
を設定している。

APP_NAME=Laravel
APP_ENV=local
APP_KEY= [自身の環境に応じたものを設定]
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://192.168.33.11
DB_CONNECTION=mysql
DB_HOST=mysql5.7
DB_PORT=3306
DB_DATABASE= [phpMyAdminで生成したDB名に設定]
DB_USERNAME=root
DB_PASSWORD=root