Laravel環境をlaradockで作る

laradockとは

PHPやその他のミドルウェアコンテナイメージ一式をつめた開発環境である。
設定をちょいちょい変えるだけで簡単にコンテナをたてられる。
Laradock

準備

1
2
3
4
$ mkdir ikasumi-project
$ cd ikasumi-project
$ git clone https://github.com/laradock/laradock.git
$ cd laradock

設定ファイル用意修正

1
2
$ cp env-example .env
$ vi .env

設定ファイルの修正箇所(diff)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
94c94
< WORKSPACE_INSTALL_XDEBUG=true
---

> WORKSPACE_INSTALL_XDEBUG=false
144c144
< PHP_FPM_INSTALL_XDEBUG=true
---

> PHP_FPM_INSTALL_XDEBUG=false
177c177
< NGINX_HOST_HTTP_PORT=8080

---
> NGINX_HOST_HTTP_PORT=80
198,201c198,201
< MYSQL_VERSION=5.7

< MYSQL_DATABASE=ikasumi_db
< MYSQL_USER=ikasumi
< MYSQL_PASSWORD=ikasumi_psw
---
> MYSQL_VERSION=latest

> MYSQL_DATABASE=default
> MYSQL_USER=default

> MYSQL_PASSWORD=secret
203c203
< MYSQL_ROOT_PASSWORD=root_psw

---
> MYSQL_ROOT_PASSWORD=root

起動、そしてlaravelアプリの設置

1
2
3
4
5
6
7
8
9
$ docker-compose up -d nginx mysql redis
確認
$ docker-compose ps
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
laradock_nginx_1 /bin/bash /opt/startup.sh Up 0.0.0.0:443->443/tcp, 0.0.0.0:8080->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

laravel設置

1
2
3
$ docker exec -it laradock_workspace_1 bash
$ composer create-project laravel/laravel=5.7 ikasumi
$ exit

nginxのdocument rootを変更する
laradock配下にあるnginx/sitesへ移動

1
2
$ cd nginx/sites
$ vi default.conf

変更箇所のdiff

1
2
3
4
13c13
< root /var/www/ikasumi/public;
---

> root /var/www/public;

変更したらlaradock再起動

1
$docker-compose restart

http://0.0.0.0:8080/にアクセスしてlaravelが表示されたらひとまずOK

DBへの接続確認

laravelのDBの接続設定のためikasumi/.envの修正
※USERNAME=ikasumiだと失敗したので、rootにしている

1
2
3
4
5
6
7
8
9
10
11
< DB_HOST=mysql
---

> DB_HOST=127.0.0.1
12,14c12,14
< DB_DATABASE=ikasumi_db
< DB_USERNAME=root

< DB_PASSWORD=root_psw
---

> DB_DATABASE=homestead
> DB_USERNAME=homestead

> DB_PASSWORD=secret

workspaceへ入ってmigrationコマンドが成功したらDBはOK

1
2
$ docker exec -it laradock_workspace_1 bash
$ php artisan migrate