Dockerで超簡単にlaravel環境を構築する方法

More than 1 year has passed since last update.


Dockerで超簡単にlaravel環境を構築する方法

今更感ありますが、試したら簡単すぎました。


使用環境

Mac環境での説明になります。

gitインストールされている前提での説明になります。

今回はNginxでの立ち上げにあります。(Apacheの場合でも途中まで一緒です。)


docker for macをインストール

docker for macをインストール。

※特にこだわりがなければStable版で問題ないです。

細かいdocker for macインストール方法は省きます。


ターミナルで動作確認

以下コマンドを実行し、正常に動作していることを確認

$ docker --version

$ docker-compose --version
$ docker-machine --version

バージョンそれぞれバージョンが表示されれば問題ありません。


laradock用ディレクトリ作成

好きなディレクトリにlaradock用ディレクトリ作成。

当方はDockerLaravelディレクトリを作成しました。

ディレクトリ移動します。

$ cd DockerLaravel


laradockリポジトリをcloneします

$ git clone https://github.com/LaraDock/laradock.git

するとlaradockなるディレクトリがDockerLaravelディレクトリ内に作成しているので、移動します。

$ cd laradock


docker-composeコマンドを使用してlaradockを立ち上げる

以下コマンドを実行し、laradockを立ち上げます。

$ docker-compose up -d workspace

ここでエラーが出なければ次へ進んでください。

※※私は大量のwarningerrorが出ました。※※

エラーが出た方はlaradockディレクトリ内で以下のコマンドを実行して下さい。

$ cp env-example .env

.envファイルをコピーして作成してあげているだけです。

その後再び

$ docker-compose up -d workspace

を実行。


正常にlaradockが立ち上がっているか確認

$ docker-compose ps実行

laradock_workspace_1があれば問題ないです。


bashでログインします

$ docker exec -it laradock_workspace_1 /bin/bash

上記コマンドを実行しログインします。


laravelインストール

ログインした直後/var/wwwにいると思いますが、いなかったら$ cd /var/wwwで移動してください。

docker内の/var/wwwが先述のDockerLaravelディレクトリとマウント(紐付け)されているので、docker内の/var/wwwで作成したディレクトリやファイルがMac上のDockerLaravelディレクトリに作成されます。その逆も然り。

その後、以下のコマンドでlaravelインストール

$ composer create-project laravel/laravel ProjectName "5.3.*"

※当方laravelバージョン5.3系が良かったので指定していますが、"5.3.*" 部分を削れば最新バージョンになります。

ProjectName 部分は適宜お好きなプロジェクト名に変えてください。

結構時間かかりますが、下手に止めず気長にお待ち下さい。(Updating dependencies (including require-dev)辺りで止まって不安になりました…)


dockerから抜け、一度dockerと止める

$ exit

上記でログインしたdockerから抜けられます。

そして以下のコマンドで一度動作中のlaradock_workspace_1を止めます。

$ docker-compose stop


docker-compose.ymlとNginxのドキュメントルートを修正

$ vim docker-compose.ymlで修正します。

### Applications Code Container #############################

applications:
image: tianon/true
volumes:
## 変更前
#- ${APPLICATION}:/var/www
## 変更後
- ../ProjectName/:/var/www/ProjectName

 ### Nginx Server Container ##################################

nginx:
build:
context: ./nginx
args:
- PHP_UPSTREAM=php-fpm
volumes_from:
- applications
volumes:
- ${NGINX_HOST_LOG_PATH}:/var/log/nginx
- ${NGINX_SITES_PATH}:/etc/nginx/sites-available
ports:
## 変更前
#- "${NGINX_HOST_HTTP_PORT}:80"
## 変更後
- "8080:80"
## 変更前
#- "${NGINX_HOST_HTTPS_PORT}:443"
## 変更後
- "443:443"
depends_on:
- php-fpm
networks:
- frontend
- backend

Nginxのドキュメントルートの修正

$ vim nginx/sites/default.confで修正します。

     ## 変更前

#root /var/www/public;
## 変更後
root /var/www/ProjectName/public;


docker-compose up 実行

$ docker-compose up -d php-fpm nginx mysqlを実行。

正常に処理が終了した後、http://localhost:8080/へアクセス。

laravelのトップページが表示されていれば終了です。


まとめ

最初のみ確認しながらの対応だったので、時間がかかりましたが、それにしても一つずつインストールするより圧倒的に早いです。

二度目以降は数分で環境構築が終わるでしょうし、何より、先述のDockerLaravelフォルダ(中身:laradock & ProjectName)ごと人へ渡し、docker-compose up -d php-fpm nginx mysql workspaceを実行させれば環境構築終了と考えるとかなり有能だと感じます。