zukucode
主にWEB関連の情報を技術メモとして発信しています。

Docker Laravelをインストールする

DockerLaravelを導入する方法を紹介します。

Docker Composeでphpmyadminを導入するまでで、nginx, php, mysql, phpmyadminのコンテナを作成しました。

この環境に対して、Laravelの環境をセットアップしていきます。

Dockerfileの修正

Laravelのインストールにはcomposerが必要ですので、composerをインストールするようにappコンテナのDockerfileを修正します。

また、gitzipなど、必要なパッケージもインストールします。

インストールするLaravelのバージョンによって必要なパッケージが異なる場合がありますので、Laravelインストール時にエラーになる場合は適宜必要なパッケージを追加してください、

DockerFile
FROM php:7-fpm

# composerをインストール
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/+local/bin --filename=composer

# Laravelに必要なパッケージをインストール
RUN apt-get update && apt-get install -y git zip unzip

RUN apt-get update \
    && docker-php-ext-install pdo_mysql

ユーザーの作成

appコンテナ内でLaravelをインストールしますが、コンテナ内の操作はすべてroot権限で実行されるため、インストールしたLaravelのファイル群をホスト側から編集できません。

それでは開発時に都合が悪いので、appコンテナにユーザーを作成します。

ユーザーの作成についてはDocker コンテナ内に一般ユーザーを作成するで紹介しています。

また、appコンテナに入ったときの作業ディレクトリをvar/www/htmlにするため、ファイルの最後に作業ディレクトリを設定するコマンドを追加します。

DockerFile
FROM php:7-fpm

# ユーザーを作成
ARG UID=1000
ARG GID=1000
RUN useradd -m -u ${UID} docker

# composerをインストール
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Laravelに必要なパッケージをインストール
RUN apt-get update && apt-get install -y git zip unzip

RUN apt-get update \
    && docker-php-ext-install pdo_mysql

# 作成したユーザーに切り替える
USER ${UID}:${GID}

# 作業ディレクトリを変更
WORKDIR /var/www/html

Dockerfileを変更したら以下のコマンドでビルドを行います。

$ docker-composer app build

ドキュメントルートの設定

nginxで設定しているドキュメントルートをLaravelの公開フォルダに合わせます。

var/www/htmlappというプロジェクト名でLaravelをインストールした場合、var/www/html/app/publicLaravelの公開フォルダとなるため、このパスをドキュメントルートに設定します。

docker/web/default.conf
server {
  root  /var/www/html;
  root  /var/www/html/app/public;
  index index.php index.html;

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

  location ~ \.php$ {
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass   app:9000;
    fastcgi_index  index.php;

    include        fastcgi_params;
    fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param  PATH_INFO $fastcgi_path_info;
  }
}

実際の開発時にはappコンテナがソースコードを配置したり、コマンドを実行したりする中心になります。

必要に応じてDockerfileを修正していろいろなパッケージをインストールしていき、快適な開発環境を構築します。

Laravelのインストール

以下のコマンドでコンテナを実行します。

$ docker-compose up -d

コンテナを起動後、appコンテナの中でコマンドを実行するため、以下のコマンドでappコンテナに入ります。

$ docker-compose exec app bash

カレントディレクトリがvar/www/htmlになっているのを確認して、Laravelのインストールコマンドを実行します。

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

インストールが完了するとホスト側にappフォルダが作成され、その中にインストールされたLaravelのファイル群が作成されていることを確認できます、

  • カレントディレクトリ
    • app
      • Laravelのプロジェクト ←作成される
    • docker
      • web
      • app
      • db
      • phpmyadmin
    • docker-compose.yml
    • index.html
    • info.php
    • connect.php

また、ブラウザでlocalhost:8080にアクセスするとLaravelのトップページが表示されることを確認できます。


関連記事