LaradockでHello Worldしてみる 【初心者向け】

こんにちは。バレットグループ入社2年目の井上です。

主にSES事業を正社員でやったりフリーランスでやったりで気づけば13年くらいエンジニアしてます。 将来は夏が嫌いなので夏は北海道でリモート作業ができるような環境に行きたいです。

さて、初めての執筆になりますが最近はもっぱらPHP + Laravelばっかり触ってまして、今回は初めてのLaradockを使ってlaravel + Docker + MySQL(ver5.7)で開発環境を作成してHello Worldを表示 + DBマイグレーションさせてみようと思います。

Macユーザーを対象にしています。

環境構築

1) Docker Desktop for Macのインストール

公式サイトにアクセスし、「Docker Desktop for Mac」をダウンロードします。 ※ ダウンロードにはログインが必要です。

hub.docker.com

Docker.dmgをダウンロードしたらインストールして起動してください。 以下の表示が出ればOKです。

f:id:tinoue0204:20190716170435p:plain
Docker Desktop for Mac

2) Laradockのダウンロード

任意の場所に作業用ディレクトリを作成し、移動します。 ※ 今回は~/直下にprojectディレクトリを作業用ディレクトリとします。

$ mkdir ~/project
$ cd ~/project

LaraDockのgitリポジトリからcloneします。

$ git clone https://github.com/LaraDock/laradock.git

laradockディレクトリの存在を確認します。

$ ls ~/project
$ laradock
3) env-exampleファイルをコピーして.envファイルを作成する
$ cd ~/project/laradock && cp env-example .env
4) Dockerの作成と開始 (数分〜十数分かかることがあります)
$ cd ~/project/laradock && docker-compose up -d nginx mysql workspace
Creating laradock_docker-in-docker_1 ... done
Creating laradock_mysql_1            ... done
Creating laradock_workspace_1        ... done
Creating laradock_php-fpm_1          ... done
Creating laradock_nginx_1            ... done
5) コンテナが開始されているか確認します
$ docker ps
CONTAINER ID        IMAGE                COMMAND                  CREATED              STATUS              PORTS                                      NAMES
8ced019eeba8        laradock_nginx       "/bin/bash /opt/star…"   57 seconds ago       Up 55 seconds       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   laradock_nginx_1
05113b14b6f7        laradock_php-fpm     "docker-php-entrypoi…"   58 seconds ago       Up 56 seconds       9000/tcp                                   laradock_php-fpm_1
9c1b37830525        laradock_workspace   "/sbin/my_init"          59 seconds ago       Up 57 seconds       0.0.0.0:2222->22/tcp                       laradock_workspace_1
589f5d8f4874        docker:dind          "dockerd-entrypoint.…"   About a minute ago   Up 58 seconds       2375/tcp                                   laradock_docker-in-docker_1
dcf0f25ca948        laradock_mysql       "docker-entrypoint.s…"   About a minute ago   Up 58 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp          laradock_mysql_1
6) laravelのインストール

workspaceコンテナにlaradockユーザーでログインします

$ cd ~/project/laradock && docker-compose exec --user=laradock workspace /bin/bash

bullet-appアプリケーションの作成をします。(数分〜十数分かかることがあります)

laradock@9c1b37830525:/var/www$ composer create-project laravel/laravel bullet-app

workspaceコンテナから抜けます

laradock@9c1b37830525:/var/www$ exit;
7) .envファイルの編集

APP_CODE_PATH_HOSTの値を変更します

$ vi .env

# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../ 
↓
APP_CODE_PATH_HOST=../bullet-app/

### MYSQL #################################################

MYSQL_VERSION=latest
↓
MYSQL_VERSION=5.7

8) 設定を反映させるため一度のdockerの停止をしましょう

$ docker-compose down 
Stopping laradock_nginx_1            ... done
Stopping laradock_php-fpm_1          ... done
Stopping laradock_workspace_1        ... done
Stopping laradock_docker-in-docker_1 ... done
Stopping laradock_mysql_1            ... done
Removing laradock_nginx_1            ... done
Removing laradock_php-fpm_1          ... done
Removing laradock_workspace_1        ... done
Removing laradock_docker-in-docker_1 ... done
Removing laradock_mysql_1            ... done
Removing network laradock_frontend
Removing network laradock_backend
Removing network laradock_default

9) キャッシュファイル削除をします

$ rm -rf ~/.laradock/data

10) 再ビルドをします

$ docker-compose build --no-cache mysql

11) dockerの開始をします

$ docker-compose up -d nginx mysql workspace
Creating network "laradock_frontend" with driver "bridge"
Creating network "laradock_backend" with driver "bridge"
Creating network "laradock_default" with the default driver
Creating laradock_mysql_1            ... done
Creating laradock_docker-in-docker_1 ... done
Creating laradock_workspace_1        ... done
Creating laradock_php-fpm_1          ... done
Creating laradock_nginx_1            ... done

12) 以下にアクセスし、Laravelの画面が表示されていれば成功です!!

http://localhost/ f:id:tinoue0204:20190716181205p:plain

13) このままではDBマイグレーションできないのでMySQL設定をします

MySQLコンテナにログイン

$ docker-compose exec mysql bash

MySQLにログイン (id: root pass: root)

root@c35097da3b39:/# mysql -u root -proot

データベース作成

CREATE DATABASE bullet CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

MySQLから抜ける

exit;

コンテナから抜ける

exit;

14) .envに上記を設定します

workspaceコンテナにログイン

$ cd ~/project/laradock && docker-compose exec --user=laradock workspace /bin/bash

.envのデータベース設定

laradock@3aad5242ec52:/var/www$ vim .env 

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=bullet
DB_USERNAME=root
DB_PASSWORD=root

15) Database Migration

laradock@3aad5242ec52:/var/www$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated:  2014_10_12_000000_create_users_table (0.06 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated:  2014_10_12_100000_create_password_resets_table (0.06 seconds)

いかがでしたでしょうか?

次回はLaravelのパワフルな機能を使ってログイン画面を作ってみようと思います。


バレットグループについてはこちら

bltinc.co.jp