こんにちは。バレットグループ入社2年目の井上です。
主にSES事業を正社員でやったりフリーランスでやったりで気づけば13年くらいエンジニアしてます。 将来は夏が嫌いなので夏は北海道でリモート作業ができるような環境に行きたいです。
さて、初めての執筆になりますが最近はもっぱらPHP + Laravelばっかり触ってまして、今回は初めてのLaradockを使ってlaravel + Docker + MySQL(ver5.7)で開発環境を作成してHello Worldを表示 + DBマイグレーションさせてみようと思います。
※ Macユーザーを対象にしています。
環境構築
1) Docker Desktop for Macのインストール
公式サイトにアクセスし、「Docker Desktop for Mac」をダウンロードします。 ※ ダウンロードにはログインが必要です。
Docker.dmgをダウンロードしたらインストールして起動してください。
以下の表示が出ればOKです。
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の画面が表示されていれば成功です!!
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のパワフルな機能を使ってログイン画面を作ってみようと思います。
バレットグループについてはこちら