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
ここでエラーが出なければ次へ進んでください。
※※私は大量の__warning__と__error__が出ました。※※
エラーが出た方は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
を実行させれば環境構築終了と考えるとかなり有能だと感じます。