初めに
環境構築は勉強も仕事に置いても最初にしてかなり重要な一環で有ります,今回はLaradockでPHP環境構築の方法を分かりやすく紹介していきます
事前準備
Dockerとgitだけを準備しておいてください
Docker ダウロードリンク
- Mac -- https://hub.docker.com/editions/community/docker-ce-desktop-mac
- Windows -- https://hub.docker.com/editions/community/docker-ce-desktop-windows
- linux(ubuntu) -- https://docs.docker.com/install/linux/docker-ce/ubuntu/
- linux(centos) -- https://docs.docker.com/install/linux/docker-ce/centos/
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二つありまして
ここでは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
ファイルを編集します
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
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
にアクセス出来たら成功です
最後にlaravelの.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でアクセス 出来ます
ユーザ名とパスワード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を編集
.
.
.
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使ってみてください