Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
59
Help us understand the problem. What is going on with this article?

More than 3 years have passed since last update.

@kiida510

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

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

59
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
59
Help us understand the problem. What is going on with this article?