LoginSignup
14
8

More than 5 years have passed since last update.

サクッとLaradock,爆速環境構築

Posted at

初めに

環境構築は勉強も仕事に置いても最初にしてかなり重要な一環で有ります,今回はLaradockでPHP環境構築の方法を分かりやすく紹介していきます
alt

事前準備

 Dockergitだけを準備しておいてください

Docker ダウロードリンク

Windowshomeはdockerに対応してない為仮想マシン作ってからdockerをダウロードして下さい
ダウロード終了後docker --versionを使って確認してみましょう

 ~ $ docker --version
Docker version 18.09.2, build 6247962

version確認出来たらオーケーです

Docker Composer

コンテナを管理するのツール,linuxユーザーはDockerをインストール後,別途に入れる必要があります
ダウロードリンクhttps://docs.docker.com/compose/install/
docker-compose --versionでバージョン確認

~ $ docker-compose --version
docker-compose version 1.23.2, build 1110ad01

Laradockインストール

公式ドキュメントURL https://laradock.io/getting-started/#installation

使用方法はAとB二つありまして
スクリーンショット 2019-04-03 22.46.01.png
ここではSetup for Multiple Projectsを選びましょう、一つの環境が複数プロジェクトに対応しやすくなります

プロジェクト置きたいディレクトリにcodeというファイルを作ってください,そしてファイル内に入って
git clone https://github.com/laradock/laradock.gitを実行してください
終了後は

~/[プロジェクト置きたいディレクトリ]/code/laradock

の様なディレクトリ構成になってるはずです
Laradockのダウロードは完了です

セッティング

laradockフォルダに入って

cp env-example .env

を実行してください、env-exampleファイルの内容をコピーして.envとして保存

nginxセッティング
~/code/laradock/nginx/sites

に入ってください,四つのファイルが確認できます

app.conf.example   default.conf  symfony.conf.example   laravel.conf.example

cp laravel.conf.example [後で作るプロジェクト名].conf
を実行してください,私はblogというプロジェクトを後で作る予定なので、
cp laravel.conf.example blog.conf を実行します

実行後,[後で作るプロジェクト名].confファイルを編集します

[後で作るプロジェクト名].conf
server {
.
.
.
    server_name 後で作るプロジェクト名.test;
    root /var/www/後で作るプロジェクト名/public;
.
.
.
    error_log /var/log/nginx/後で作るプロジェクト名_error.log;
    access_log /var/log/nginx/後で作るプロジェクト名_access.log;
}

修正後保存してからmysqlの設定見ていきます

Mysqlセッティング

下記のディレクトリ内で.envファイルを開いでください

~/[プロジェクト置きたいディレクトリ]/code/laradock
[.env]
MYSQL_VERSION=latest
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

上記のはデフォルト設定になってます,mysqlv8.0が起動されますが、5.7の時はmysql_native_password認証使用してましたが8.0ではcaching_sha2_passwordに変わってます,いつも使用してるMysqlClientがdbに繋がらない可能性があるので、もう一ヶ所の設定を追加します

laradock/mysql/my.cnf

my.cnfファイルを開き
空いてる所にdefault_authentication_plugin=mysql_native_passwordを追加してください
つまり認証形式をいつものmysql_native_passwordへ指定

UP

セティング終わりましたので,コンテナ立ち上げていきます,laradockディレクトリ内で

 docker-compose up -d nginx mysql redis

を実行して下さい、 初回では数分かかると思います
終了後docker-composer psを実行してください

           Name                          Command                State                       Name                          Command               State                       Ports                     
---------------------------------------------------------------------------------------------------------------------
laradock_docker-in-docker_1   dockerd-entrypoint.sh            Up      2375/tcp                                      
laradock_mysql_1              docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp, 33060/tcp             
laradock_nginx_1              /bin/bash /opt/startup.sh        Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp      
laradock_php-fpm_1            docker-php-entrypoint php-fpm    Up      9000/tcp                                                      
laradock_redis_1              docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp                        
laradock_workspace_1          /sbin/my_init                    Up      0.0.0.0:2222->22/tcp 

hostsに内容追加

mac
/etc/hosts

windows
C:\Windows\System32\drivers\etc\hosts

127.0.0.1 blog.testを空いてる所に追加して下さい

laravelインストール

docker-compose exec workspace bashを実行して下さい, コンテナに入ってからディレクトリ内にはlaradockだけが存在してるはずです

composer create-project --prefer-dist laravel/laravel blog実行してlaravelをインストールして下さいblogの所はnginxセッティング時入力したプロジェクトに入れ替えてください

インストール終了後blog.testにアクセス出来たら成功です
スクリーンショット 2019-04-04 10.40.06.png
最後にlaravelの.envを修正して完了です

.env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=default
DB_PASSWORD=secret

REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379

mysql補足

laradockはphpmyadminコンテナ用意してありますので
docker-compose up -d phpmyadminで起動できます,起動後http://localhost:8080でアクセス 出来ます
スクリーンショット 2019-04-04 10.52.51.png
ユーザ名とパスワードrootでログイン出来ます

laravelの.env内にblogというdbに接続すようの設定してますので,blog データベース作ります,出来たら
defaultユーザーにblogデータベースの操作権限を与えます,下記のクエリを実行

GRANT ALL ON `package`.* TO 'default'@'%'

また phpmyadminを使用せずデータベース作って、権限付与の方法もあります
公式ドキュメント https://laradock.io/documentation/#create-multiple-databases-mysql

cp mysql/docker-entrypoint-initdb.d/createdb.sql.example createdb.sql

laradockディレクトリを実行し,createdb.sqlを編集

createdb.sql
.
.
.
CREATE DATABASE IF NOT EXISTS `blog` COLLATE 'utf8mb4_unicode_ci' ;
GRANT ALL ON `blog`.* TO 'default'@'%' ;

FLUSH PRIVILEGES ;

phpmyadminで作ったデータを削除し,mysqlコンテナrestart

rm -rf ~/.laradock/data/*
docker-compose restart mysql

これでmysqlコンテナupされる時,createdb.sqlが自動で実行されてdb作られて、権限付与も完成します

restartしたくなかったら

docker-compose exec mysql bash
$ mysql -u root -p < /docker-entrypoint-initdb.d/createdb.sql

以上で出来上がりです、docker環境試してみたい方は是非laradock使ってみてください

14
8
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
14
8