Laravel環境をDockerで作りました。
よく使われている環境はありますが、シンプルにやりたかったので自前でdocker-composeしています。
ファイル構成イメージ
.
├── Dockerfile
├── docker-compose.yml
├── etc
│ └── nginx
│ └── conf.d
│ └── default.conf
└── laravel
docker-compose.yml
version: "2"
services:
nginx:
image: nginx:alpine
volumes:
- ./etc/nginx/conf.d/:/etc/nginx/conf.d/
- ./laravel/public:/var/www/laravel/public
ports:
- 80:80
links:
- phpfpm
depends_on:
- phpfpm
phpfpm:
build:
context: .
dockerfile: ./Dockerfile
volumes:
- ./laravel:/var/www/laravel
links:
- mysql
depends_on:
- mysql
environment:
- DB_HOST=mysql
- DB_DATABASE=wakana
- DB_USERNAME=root
- DB_PASSWORD=pass
mysql:
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=pass
- MYSQL_DATABASE=wakana
Mysqlのバージョンが5.7なのは、8だとめんどくさいエラーでるからです。
Illuminate\Database\QueryException : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
Dockerfile
FROM php:7.2-fpm-alpine
RUN docker-php-ext-install pdo_mysql
PHPはメンテコストを考え現在(2018/05/09現在)latestの7.2に固定していますがお好きなので大丈夫です。
phpfpmにpdo_mysql入ってないので別にDockerfile作成しインストールしてあげます。
Nginx
nginxコンテナに共有する./etc/nginx/conf.dに置くファイルです。
普通にららべる向けの設定を書けばOKです。
server {
listen 0.0.0.0:80;
server_name localhost;
charset utf-8;
root /var/www/laravel/public;
index index.php;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_pass phpfpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Docker立ち上げ
docker-compose up -d
どーん!
アプリケーションキー発行、マイグレーションなど
docker-compose exec phpfpm /var/www/laravel/artisan key:generate
docker-compose exec phpfpm /var/www/laravel/artisan migrate
もしくは
docker-compose exec phpfpm /bin/sh
このコマンドで中入れるのでlaravelフォルダ内で作業します。
cd /var/www/laravel/
php artisan key:generate
php artisan migrate
アクセス
こんにちわんこ!
http://localhost/