Edited at

Windows上でLaradock(Laravel + Docker + nginx)開発環境を構築するお話

:warning: 2018年11月現在です。laradock等で修正が入っている可能性があります。入っていてください。

:warning: 雑。自分用メモ。

:warning: 動作保証外。特に仮想化の影響で導入後にBSODが多発する場合があるため、本当に自己責任でお願いします。

ぼくはもうつかれたよ、パト〇ッシュ......


概要

Windows機にDocker for Windowsを導入し、

そこにlaradockを用いて

LaravelのWEB開発環境のコンテナを素早く用意してみます。


つかうもの


  • 必須


    • くじけぬこころ

    • Windows 10 Pro

    • Ubuntsu / Bash on windows

    • Docker



  • あると良い


    • X410

    • xterm

    • SurfacePro6 16G/512G

    • どとーる



※ Windows 10 Home -> Proのアップデートは、自分のSurfacePro 6にて 2018/10 現在で5分ちょっとで作業完了できました。

※ laradockで使えるまでの環境構築は30~60分ほど

※ 仕事で使うdockerコンテナを取ってきて全部構築するのは1~2時間コースでした

※ うちの活動範囲はすたばよりどとーるのほーがおおいんだ。はにーらてがすきです。


手順


WSL


有効化

スタートメニュー -> 設定:gear: -> アプリ -> アプリと機能 -> 関連設定の「プログラムと機能」

※ 下だったり、左だったり、右だったりする。

-> Windowsの機能の有効化と無効化 -> 「Windows Subsystem for Linux」にチェック


X410

X Windowサーバ。かっこいい。

最近、値引きセールしていた。なくてもいいけど、あるとちょっといい。


Ubuntsu入れるよ

Microsoft Storeを開いてUbuntsu で検索。インストール。無料。


違い。


  • 無印: いつもの。

  • LTS :LTS(Long Term Support:長期サポート)”版
    2年ごとのアプデが提供されるぞ。
    Windowsのサービスパックみたいな安定バージョンだ。


アプデする

-y で全部yesだ。いいね?

$ sudo apt update && sudo apt upgrade -y


日本語化、日本語マニュアル

べ、べつに俺は英語に詳しいけど、別にあってもいいでしょ!

$ sudo apt install language-pack-ja  -y && sudo apt install manpages-ja && sudo update-locale LANG=ja_JP.UTF-8


xterm

$ sudo apt install xterm


X Windowsサーバへ出力を飛ばすための設定

cygwinなどと衝突する場合は0.0を1.0とかに。

X Windowサーバー側も設定を修正。

$ export DISPLAY=localhost:0.0


Ubuntsu側からホスト(Windows)側のDockerを使うように設定

$ echo "export DOCKER_HOST='tcp://0.0.0.0:2375'" >> ~/.bashrc


忘れるな、環境更新。

$ source ~/.bashrc


Dockerクライアント


Ubuntsu側インストール

$ sudo apt-get install \

apt-transport-https ca-certificates curl \
software-properties-common

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

$ sudo apt-get update
$ sudo apt-get install docker-ce


Docker For Windows

要:Windows10 Pro

取得先:

https://docs.docker.com/docker-for-windows/install/


Hyper-V


有効化

:warning: 本来、Docker For Windowsのインストール時に自動的に有効化してくれる。
でも、Windows10 Homeにインストールしてしまい、
あとからWindows10 Proにアップグレードした場合などはこの操作が必要。

前述の「Windowsの機能の有効化と無効化」から探してもいいし、

下記のように 管理権限付き のpowershellで

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All


Docker Clientの接続許可設定

Ubuntsuに入れたDockerのClientからアクセスできるように設定をします。

タスクバーのDockerのアイコンを右クリックし、Generalを選択して、

Expose daemon on tcp://localhost:2357 without TLS

にチェックをつける。


ホスト(Windows)機のDockerを見てるかチェック

Ubuntsu側で。

$ docker info | grep 'Operating System'

すると、

Operating System: Docker for Windows

ってなるはず。


Dockerが動くかテスト

もっかいUbuntsu側。

動かしてみる。

$ docker run hello-world


Laradockの準備


git checkout

:warning: 2018/11現在、改行コードをCR/LFに変換してチェックアウトすると、

nginxが下記のエラーを吐いてdocker上で起動しません。そ、そんなー(´・ω・`)

$ docker-compose logs nginx

Attaching to laradock_nginx_1
nginx_1 | nginx: [emerg] open() "/var/log/nginx/error.log" failed (2: No such file or directory)

このため、目標のリポジトリで下記の設定をしておくか、bash for windowsでチェックアウトするようにしてください。

git config --local core.autocrlf input

git config --local core.eol lf


設定ファイル

:warning: Windows上のlaradockはデフォルトで用意されている.env-exampleに記述の

APP_CODE_PATH_HOST=../

の相対パスが解決できません。起動中のコンテナにアクセスした際に

ERR_EMPTY_RESPONSEになった場合はこちらを疑ってみてください。

下記のように、ドライブレターからのフルパスでの記述が必要です。

※ WEBサーバ周りも修正が必要です

※ NGINX_SITES_PATHまたはAPACHE_SITES_PATH、

MYSQL_ENTRYPOINT_INITDB、MARIADB_ENTRYPOINT_INITDBやPOSTGRES_ENTRYPOINT_INITDB...etc...

APP_CODE_PATH_HOST=/c/Projects/Nightley-Inc/stats-search-web/


  • 同期モード変更

### Docker Sync ###########################################

# If you are using Docker Sync. For `osx` use 'native_osx', for `windows` use 'unison', for `linux` docker-sync is not required
DOCKER_SYNC_STRATEGY=unison


Laravelの基本設定など

こちらは他に解説などもあると思うので割愛


Dockerでコンテナ操作

以下はおよその例


コンテナ作成と実行

一通り準備したら下記のコマンドをチェックアウトした.laradock下で実行するとコンテナが作成、立ち上がりWEBサイトが見えるようになります。


  • PowershellでもUbuntsuのどちらでもかまいません。

  • Ubuntsuから叩く場合、Host機(Windows)側が/mnt/c/で標準でマウントされます。
    なので、/mnt/c/hoge/hoggy/src/.laradockのようにカレントディレクトリを移ってください。

  • 特に設定を変えていない場合、 http://localhost:80/ で見えるはずです。

docker-compose up -d nginx mysql redis


停止と削除

$ docker-compose down


コンテナに入る

※ laradock_workspace_1は該当する名称に書き換え

docker exec -it laradock_workspace_1 /bin/bash


動作中コンテナの一覧確認

docker ps


参照及び引用元


Tips


コンテナ名の扱い

複数のlaradox環境を走らせる場合にプレフィックスを変えてかぶらないようにする


~/.laradock/.env

COMPOSE_PROJECT_NAME=laradock