takaya030の備忘録

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

PHP最速フレームワーク siler を docker で動かしてみる

PHPbotAPI サーバーを作成するためにコンパクトなフレームワークを探したところ siler を見つけました
こちらのページによると PHP 最速フレームワークだそうです
開発環境つくりがてら Docker で動作させてみました

検証環境

Windows10 Home Edition
VirtualBox 5.2.16
Docker version 18.05.0-ce, build f150324
docker-machine version 0.14.0, build 89b8332
docker-compose version 1.20.1, build 5d8c71b

ディレクトリ構成

siler
|---app.Dockerfile
|---data.Dockerfile
|---docker-compose.yml
|---php72.Dockerfile
|   
|---data
|   |---www
|
|---composer

各種設定ファイル

php72.Dockerfile

php 7.2 + composer のイメージを作成する Dockerfile

FROM php:7.2-alpine
LABEL maintainer "takaya030"

RUN apk add --update --no-cache --virtual .persistent-deps \
        ca-certificates \
        curl \
        tar \
        libpng \
        libxml2 \
        sudo \
        xz \
        git \
        unzip

# create docker user
RUN adduser -S -u 1000 -g 50 docker \
    && echo 'docker:tcuser' | chpasswd

# install composer
RUN curl -sS https://getcomposer.org/installer | php \
    && mv composer.phar /usr/local/bin/composer

# modify php.ini
RUN mv $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini \
    && sed -i -e "s/;date.timezone *=.*$/date.timezone = Asia\/Tokyo/" $PHP_INI_DIR/php.ini

ENV COMPOSER_HOME /home/docker/.composer

RUN mkdir -p /data/www
VOLUME ["/data"]
WORKDIR /data/www

USER 1000

ONBUILD ADD ./data /data

CMD ["true"]

data.Dockerfile

baseapp が参照するボリュームコンテナのイメージを作成する Dockerfile

ROM busybox
LABEL maintainer "takaya030"

RUN mkdir -p /data \
    && mkdir -p /home/docker/.composer
VOLUME ["/data","/home/docker/.composer"]
CMD ["true"]

app.Dockerfile

アプリケーションサーバーのイメージを作成する Dockerfile

FROM takaya030/php72-alpine
LABEL maintainer "takaya030"

EXPOSE 8000

CMD ["composer","serve"]

docker-compose.yml

version: "2"
services:
  data:
    build:
      context: .
      dockerfile: data.Dockerfile
    volumes:
      - ./data:/data
      - ./composer:/home/docker/.composer
  base:
    build:
      context: .
      dockerfile: php72.Dockerfile
    image: takaya030/php72-alpine
    volumes_from:
      - data
  app:
    build:
      context: .
      dockerfile: app.Dockerfile
    volumes_from:
      - data
    ports:
      - "8000:8000"
    command: ["composer","serve"]
    depends_on:
      - base

data イメージのビルド

最初に data のイメージを作成します

$ cd siler
$ docker-compose build data

base イメージのビルド

次に base のイメージを作成します

$ docker-compose build base

siler のインストール

base イメージを使って data/www/ フォルダに siler をインストールします (コマンドの最後にピリオドがついています)

$ docker-compose run --rm base composer create-project siler/project .

app イメージのビルド

サンプルアプリケーションを動作させるためのイメージをビルドします

$ docker-compose build app

動作確認

以下のコマンドでアプリケーションサーバーが起動します

$ docker-compose up -d

web ブラウザで http://192.168.99.100:8000 にアクセスして Hello World が表示されれば成功です f:id:takaya030:20181013232107p:plain

参考サイト

github.com