takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

Docker で構築した nginx + php-fpm で Lumen を動かす

WindowsVirtualBox の Docker 環境上で構築した nginx + php-fpm で Lumen を動かしたときの作業メモ

Docker のホスト OS に Windows のフォルダをマウントする

下記の記事の手順でホスト OS (CoreOS) の /workspace に Windows のフォルダをマウントする。

Lumen のインストール

マウントした /workspace に移動して下記のコマンドで Lumen をインストールする。

$ composer create-project --prefer-dist laravel/lumen lumen

各種設定ファイル

こちらの記事で作成した Dockerfile や conf ファイルを下記の通りに変更します。
docker-compose.yml

nginx: 
  build: ./nginx
  ports: 
    - "80:80"
  links: 
    - php7

php7: 
  build: ./php7
  volumes: 
    - /workspace/lumen:/webapp

nginx/Dockerfile

FROM nginx:latest
MAINTAINER takaya030

ADD server.conf /etc/nginx/conf.d/server.conf

nginx/server.conf

server {
    listen 80 default;
    server_name _;
    root /webapp/public;
    index index.php index.html index.htm;
    charset utf-8;

    access_log off;
    error_log off;

    rewrite ^(.+)/$ $1;

    location / {
        # try_files $uri $uri/ /index.php$is_args$args;
        try_files $uri /index.php?$query_string;
    }

    location ~ ^/index.php$ {
        fastcgi_pass phpfpm_php7_1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include       fastcgi_params;
    }
}

php7/Dockerfile

FROM php:7-fpm
MAINTAINER takaya030

RUN apt-get update \
  && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev libmcrypt-dev \
  && docker-php-ext-install pdo_mysql mysqli mbstring gd iconv mcrypt

COPY index.php /var/www/html/

php7/index.php

<?php
	phpinfo();

イメージのリビルド

docker@dev:~$ cd /home/docker/phpfpm/
docker@dev:~/phpfpm$ docker-compose build

コンテナの起動

docker@dev:~$ cd /home/docker/phpfpm/
docker@dev:~/phpfpm$ docker-compose up -d

動作確認

web ブラウザで http://192.168.99.100/ にアクセスして下の画像のように表示されるか確認。