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

  • 18
    いいね
  • 0
    コメント

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を実行させれば環境構築終了と考えるとかなり有能だと感じます。