LoginSignup
11
8

More than 3 years have passed since last update.

WSL2+docker+PHPのWindows開発環境構築(2) docker編

Last updated at Posted at 2020-03-03

本ページに直接来た方はWSL2+docker+PHPのWindows開発環境構築(1) WSL2編から読んでね。

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪


------------------- ↓ 余談はここから ↓-------------------

関連記事:

Laradockいいなぁ ('ω')
今後はガンガン使っていこう。

docker自体は深堀しない方針なので、
さくっと環境作れる方法を探してた。
公式を使えばへーきやろってことで公式のイメージを使おうとしたけど、

|ω・) .。oO ワカリニクイ

pullしてbuildすりゃえーんちゃうの?
dockerfileってなに?
docker-compose.ymlってどっからでてきたん。

という感じで止まっていたが、
それらを解決するフレームワークがあった。
それが Laradock

使いたいソリューションの実行環境をまとめて作れるみたい。
一応以下の環境を想定。

  • nginx
  • php-fpm
  • mysql
  • redis

この手の記事でインストールしてHello Worldでハイ終わりってのが多いけど、
dockerのhello worldってほとんど無意味なので、
ちゃんと実行環境作るよ。


------------------- ↓ 本題はここから ↓-------------------

WSLの調整

OSによりけりだけど、
少なくともUbuntuはwslの設定ファイルがなく、
以降の動作に不具合が出る。
(dockerをインストールすると/mnt/cが見えなくなるなど)
そこで、先に設定ファイルを作っておく。
(wsl.confがある場合は飛ばしていいよ。crossDistro設定があるかは見ておいてほしい。)

C:\> wsl -d Ubuntu
$ sudo touch /etc/wsl.conf
$ sudo nano /etc/wsl.conf  # viとかでも可

中身はこんな感じ

[automount]
enabled = true
options = "metadata"
crossDistro = true

dockerをインストール

そもそもWSL2を使う目的はdockerの運用だと思うので、
dockerのインストールやってみよう。
WSL側にインストールは必要ないみたい。
(一応できるけどそれは後述へ)

Docker Desktop Edgeをインストール

以下よりDocker Desktop Edgeをインストール
https://docs.docker.com/docker-for-windows/wsl-tech-preview/

再起動後、タスクバーのdockerアイコンから「setting」を選択

2020-02-23 (4).png

「Enable the experimental WSL2 based engine」にチェックを入れ「Appli&Restart」を押下

2020-02-23 (3).png

暫く経って再起動が終わるとnotificationが入る

2020-02-23 (5)-re.PNG

「Enable WSL Integration」を押下。

2020-02-23 (7)-re.PNG

「Ubuntu」を選択して「Appli&Restart」を押下
特殊なディストリビューション(docker-desktop〜〜)が追加されるのが確認できる。

2020-02-23 (8).PNG

動作確認
C:\Users\magic>wsl -d ubuntu
$ docker -v
Docker version 19.03.5, build 633a0ea838

コマンドどっから来たのかと思ったら、
/mnt経由でマウントされていた。
なかなかダイナミックである。

2020-02-23 (9)-re.PNG

とりあえずHello Worldしてみよう。

$ docker run hello-world
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Hello from Docker!

PHPの実行

dockerが起動したので、
PHPイメージを使ってみよう。
正直dockerイメージがどういう構成になっているかとか興味がないので、
さくっと使えるlaradockを使う。
詳しくはLaradockのページを読んでほしい。
http://laradock.io

$ cd
$ git clone https://github.com/Laradock/laradock.git
$ cd laradock
$ cp env-example .env
$ docker-compose up -d nginx mysql redis workspace

起動確認

curl叩いてWebが起動してるか確認。

$ curl localhost
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

コマンドラインも行けるか確認。

$ docker-compose exec workspace php -v
PHP 7.3.15-3+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb 23 2020 07:23:10) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.15, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.3.15-3+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

あれ?また長くなった。
IDEとつなげるのは次回。
WSL2+docker+PHPのWindows開発環境構築(3) PHPStorm編


------------------- ↓ 後書はここから ↓-------------------

WSL側にdockerをインストール

特に必要ないが一応記載。
インストールは公式の通り行う
https://docs.docker.com/install/linux/docker-ce/ubuntu/

hello-world失敗しても気にせず進める。

その他、aptやyum、homebrewを使ってもいい。

nodeのエラー?

なんだかよくわからないnodeエラーが出る。

Now using node v13.9.0 (npm v6.13.7)
node -> stable (-> v13.9.0) (default)
npm ERR! code SELF_SIGNED_CERT_IN_CHAIN
npm ERR! errno SELF_SIGNED_CERT_IN_CHAIN
npm ERR! request to https://registry.npmjs.org/gulp failed, reason: self signed certificate in certificate chain       
npm ERR! A complete log of this run can be found in:
npm ERR!     /home/laradock/.npm/_logs/2020-03-03T12_59_27_644Z-debug.log
ERROR: Service 'workspace' failed to build: The command '/bin/sh -c if [ ${INSTALL_NODE} = true ]; then     mkdir -p $NVM_DIR &&     curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash         && . $NVM_DIR/nvm.sh         && nvm install ${NODE_VERSION}         && nvm use ${NODE_VERSION}         && nvm alias ${NODE_VERSION}         && if [ ${NPM_REGISTRY} ]; then         npm config set registry ${NPM_REGISTRY}         ;fi         && if [ ${INSTALL_NPM_GULP} = true ]; then         npm install -g gulp         ;fi         && if [ ${INSTALL_NPM_BOWER} = true ]; then         npm install -g bower         ;fi         && if [ ${INSTALL_NPM_VUE_CLI} = true ]; then         npm install -g @vue/cli         ;fi         && if [ ${INSTALL_NPM_ANGULAR_CLI} = true ]; then         npm install -g @angular/cli         ;fi         && ln -s `npm bin --global` /home/laradock/.node-bin ;fi' returned a non-zero code: 1

この場合はdockerが問題なのではなく、
ローカルPCのウィルス対策ソフトがなんかやってる。

  • URLの除外設定をする
  • ネットワーク監視機能をOFFにする
  • ウィルス対策ソフトをOFFにする

(^。^)y-.。o○ 好きなの選べ

11
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
8