Docker Laravelをインストールする
Docker
でLaravel
を導入する方法を紹介します。
Docker Composeでphpmyadminを導入するまでで、nginx
, php
, mysql
, phpmyadmin
のコンテナを作成しました。
この環境に対して、Laravel
の環境をセットアップしていきます。
Dockerfileの修正
Laravel
のインストールにはcomposer
が必要ですので、composer
をインストールするようにapp
コンテナのDockerfile
を修正します。
また、git
やzip
など、必要なパッケージもインストールします。
インストールする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/html
にapp
というプロジェクト名でLaravel
をインストールした場合、var/www/html/app/public
がLaravel
の公開フォルダとなるため、このパスをドキュメントルートに設定します。
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
- app
また、ブラウザでlocalhost:8080
にアクセスするとLaravel
のトップページが表示されることを確認できます。