LoginSignup
1
4

More than 5 years have passed since last update.

PHP公式のDocker ImageでLaravelを動かす

Last updated at Posted at 2017-04-21

Docker HubにあるPHPのオフィシャルイメージをベースにして、
Laravelを動かすことのできるDockerfileを記述してみました。

なお、このDockerfileはLaravelのプロジェクトルートに置かれている想定です。

FROM php:7.1-apache
RUN apt-get update && apt-get -y install git unzip

RUN DEFAULT_SITE_FILE=/etc/apache2/sites-enabled/000-default.conf && TMP=$(mktemp) && sed 's!/var/www/html!/var/www/html/public!' $DEFAULT_SITE_FILE > $TMP && mv $TMP $DEFAULT_SITE_FILE
RUN curl -L https://raw.githubusercontent.com/php/php-src/master/php.ini-production | sed 's/expose_php = On/expose_php = Off/' > /usr/local/etc/php/php.ini
RUN a2enmod rewrite

COPY . /var/www/html

WORKDIR /var/www/html
RUN sh -c 'if [ ! -x /var/www/html/composer.phar ]; then curl https://getcomposer.org/installer | php; fi'
RUN ./composer.phar install

RUN chown -R www-data:www-data /var/www/html

RUN の狙い

  • apt-get -y install git unzip はComposerを使った依存モジュールのインストールに必要。
  • RUN DEFAULT_SITE_FILE=... は、ドキュメントルートをプロジェクトルートではなくその下のpublicディレクトリにするため。
  • RUN curl -L ... は、PHPのリポジトリからphp.iniを取得して、expose_php を書き換えてPHPのバージョンがヘッダに出ないようにする。純粋に開発環境であれば不要かもしれない。
  • RUN a2enmod rewrite は mod_rewrite を有効にする。
  • RUN sh -c ... はプロジェクトにcomposerがなければ取得する。
  • RUN chown ... はWebサーバと実行権限を揃えるため。もしかするとstorageディレクトリだけでもいいのかもしれない。
1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4