苦手なDockerを使ってLaravel開発環境構築を構築(MailHog使いたい)


きっかけ

  • 環境開発苦手
  • 長いコマンド打たなきゃでdocker怖い
  • ちょうどLaravelの開発環境ほしかった

とにかく環境構築・dockerに対しての喰わず嫌い(つまみ食い嫌い)
感が半端ないのであえてdockerでLaravel環境構築やってみる

Laradockとは?

Laradock??dockerじゃないんかい!!
というつっこみを入れつつ・・・

A full PHP development environment for Docker.
Supports a variety of useful Docker Images, pre-configured to provide a wonderful PHP development environment.

参照:Lradock

Laradockとは、Laravelコミュニティの有志がメンテナンスしている
オープンソースのLaravel環境開発であり、「Docker」上で動作する。

なのでざっくりと説明すると、
dockerが土地でLaradockが家みたいな関係なのだ。

Laradockのダウンロードとdockerの初期化

プロジェクトのディレクトリ作成

最終的なディレクトリのイメージ

projectname
     laradock-projectname
     laravel-projectname

上記のディレクトリをイメージしながらまず最初にprojectnameディレクトリを作成し、その中に入る。

$ mkdir projectname
$ cd projectname 

Laradockをダウンロード

LaradockをGitHubからクローンしてくる。つけたいディレクトリ名前を最後に入力。

$ git clone https://github.com/Laradock/laradock.git laradock-projectname

Laradockの環境設定ファイルを作成

Laradockディレクトリのlaradock-projectnameに入っる。
env-exampleファイルを.envとしてコピーする。

$ cd laradock-projectname
$ cp env-example .env

dockerコンテナの初期化

コンテナ初期化では必要なファイルのダウンロードをするため、割と時間がかかる。

$ docker-compose up -d nginx mysql workspace phpmyadmin

こちらのコマンドでStateがUpになっていれば無事成功!

$ docker-compose ps

Laravelプロジェクトの作成

Laravelプロジェクトは「workspace」コンテナ上に作成します。

「workspace」コンテナへログイン

「workspace」コンテナにはLaravelに必要なものが一式用意されているため、
composerなどは「workspace」コンテナを通して実行。

とりあえずログイン

$ docker-composer exec workspace bash

composerコマンドを実行して新規プロジェクトを作成。
今回はlaravel5.5で作成したかったのでバージョン指定。

$ composer create-project laravel/laravel laravel-projectname --prefer-dist "5.5.*"

無事作成できたらコンテナからログアウト

$ exit

Laradockの環境設定ファイルを設定

先ほど作成したLaradockディレクトリ配下の.envを変更。
※必要部分以外省略

### Paths #################################################

# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../laravel-projectname

# Point to where the `APP_CODE_PATH_HOST` should be in the container
APP_CODE_PATH_CONTAINER=/var/www

# You may add flags to the path `:cached`, `:delegated`. When using Docker Sync add `:nocopy`
APP_CODE_CONTAINER_FLAG=:cached

# Choose storage path on your machine. For all storage systems
DATA_PATH_HOST=~/.laradock-projectname/data


nginxの設定

Laradockディレクトり配下のdocker-compose.ymlを変更する。
これでポート番号を8888に変更することができた。
※必要部分以外省略

### NGINX Server #########################################
    nginx:
      build:
        context: ./nginx
        args:
          - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
          - PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
          - CHANGE_SOURCE=${CHANGE_SOURCE}
          - http_proxy
          - https_proxy
          - no_proxy
      volumes:
        - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
        - ${NGINX_HOST_LOG_PATH}:/var/log/nginx
        - ${NGINX_SITES_PATH}:/etc/nginx/sites-available
        - ${NGINX_SSL_PATH}:/etc/nginx/ssl
      ports:
        - "8888:80"
        - "443:443"
      depends_on:
        - php-fpm
      networks:
        - frontend
        - backend

コンテナ再起動

一通り設定が終わったところで、コンテナを再起動。

$ docker-compose stop
$ docker-compose up -d nginx mysql workspace phpmyadmin

そしていよいよ・・・・・・・

ブラウザを開いてhttps:8888にアクセス

じゃじゃじゃーーーん!!!!