LoginSignup
7
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-03-16

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

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


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

関連記事:

前回docker起動までいけた。
あとはPHPStormと繋げれば良い。

('ω')ノ あとすこしやで


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

Dockerの調整

タスクバーのdockerアイコンから「setting」を選択
以下にチェックを入れて「Appli&Restart」

  • Expose daemon on tcp://localhost:2375 without TLS

キャプチャ-202003091735.JPG

PHPStormの調整

Pluginのインストール

兎にも角にもプラグイン。
DockerPHP Dockerをインストール

[File]-[Setting]-[Plugins]から以下の二つをインストール

  • Docker
  • PHP Docker

キャプチャ-202003091743.JPG

(PHP Remote Interpreterってのも一緒に入る)

Docker Pluginの設定

「Build, Execution, Deployment」-「Docker」-「+」を押下
「TCP socker」にチェックを入れて「OK」を押下

キャプチャ-202003091744.JPG

PHP Pluginの設定

「Languages & Frameworks」-「PHP」-「Cli Interpreter」-「...」を押下

キャプチャ-202003091751.JPG

「Cli Interpreters」欄の「+」を押下、
「From Docker, Vagrant, Vm, WSL, Remote...」を押下する。

キャプチャ-202003091755.JPG

「Image Name」欄の「▼」を押し、
「laradock_php-fpm:latest」を選択

キャプチャ-202003141546.JPG

コード補完が効いていたら成功だ。
これで実際の開発に入ることができるだろう。
(゜-゜) こんなに頑張らないと物作れないってどうなんだろ・・・。

このあとGitやらXdebugやら使うことになると思うが、
それは一般的なものなので今回は省く。
(過去記事のどれかでやったっけな。)


------------------- ↓ 後書はここから ↓-------------------
これだけやって、
ようやく使えるDockerってどうなの?
(ワイだけかな)
まぁ、AWSのデプロイ考えたらdockerなのかなぁ。
ほかの方法だとイメージを量産する感じになっちゃうし。
環境を作るって観点だけで物事を考えたらいかんか。

今回はlaradockでやったけど、
これがなければ環境作りだけで時間を食い潰してただろうな。
いまいちDocker Hubの扱い方がよくわからない。

PHPStormのインストール先

(令和2年4月11日追記)

WSL2でファイルアクセスのパフォーマンスは向上しているが、
LinuxからWindowsのディレクトリアクセスは逆に遅くなっている。

もし C:\Users\magic配下とかにGit Cloneとかした場合、
composer installとかnpm installとかがめちゃくちゃ遅くなる。
(webpackとか目も当てられない感じだった)

なので、ファイルの保存先はLinuxファイルシステム上にする一択となる。
ここで問題となるのが、
PHPStormのインストール先。
VSCodeはWSL越しのリモート開発機能が実装されていて、
WindowsにインストールしたVSCodeからLinux上へのファイルアクセスがスムーズになっている。
しかし、PHPStormを含むその他のIDEはそうなってない。

Linux上にPHPStormをインストールする場合

インストール方法自体はこの辺で書いてる

変更点とすれば

記事ではVcXsrvを使ってるが、
今はX410使ってる。

X11設定にはlocalhostが使えなくなってるので、
/etc/resolv.confのnameserver欄のIPを使用する。

$ echo "export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0" >> ~/.bashrc

(bash長いこと使ってないから書き方あってるかわからん・・・)

Windows上にPHPStormをインストールする場合

WindowsからLinux上のファイルへアクセスする流れになるが、
UNC方式(\\wsl$\ubuntuみたいなバックスラッシュから始まる名称)でアクセスすると、
二度目開いたときに.ideaが読み込まれなくなる変な状態になっている。
(令和2年4月11日現在、バグだと思うので修正はされると思うが)

なので代替案としてドライブレターを与えて、
そこからアクセスするようにする。

C:\> net use z: \\wsl$\ubuntu

MySQLが起動しない

PHPとは関係ないが、
Dockerがらみ。
DockerコンテナでMySQLだけが起動しない。

$ docker-compose up -d --build mysql

シーン・・・。

(?_?) アレ?
ログ見てみよう。

2020-03-14 18:48:39+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
2020-03-14 18:48:39+09:00 [Note] [Entrypoint]: Initializing database files
2020-03-14T09:48:39.973002Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2020-03-14T09:48:39.973444Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 22
2020-03-14T09:48:39.986553Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
mysqld: Cannot change permissions of the file 'ca.pem' (OS errno 1 - Operation not permitted)
2020-03-14T09:48:45.126054Z 0 [ERROR] [MY-010295] [Server] Could not set file permission for ca.pem
2020-03-14T09:48:45.126403Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2020-03-14T09:48:45.126758Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-03-14T09:48:46.659592Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19) MySQL Community Server - GPL.

|ω・) ナニコレ

データディレクトリをいったん削除してもう一回起動

2020-03-14 18:48:39+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
2020-03-14 18:48:39+09:00 [Note] [Entrypoint]: Initializing database files
2020-03-14T09:48:39.973002Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2020-03-14T09:48:39.973444Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 22
2020-03-14T09:48:39.986553Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
mysqld: Cannot change permissions of the file 'ca.pem' (OS errno 1 - Operation not permitted)
2020-03-14T09:48:45.126054Z 0 [ERROR] [MY-010295] [Server] Could not set file permission for ca.pem
2020-03-14T09:48:45.126403Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2020-03-14T09:48:45.126758Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-03-14T09:48:46.659592Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19) MySQL Community Server - GPL.
2020-03-14 18:53:21+09:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.19-1debian10 started.
2020-03-14 18:53:21+09:00 [Note] [Entrypoint]: Initializing database files
2020-03-14T09:53:21.968144Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2020-03-14T09:53:21.969067Z 0 [System] [MY-013169] [Server] /usr/sbin/mysqld (mysqld 8.0.19) initializing of server in progress as process 22
2020-03-14T09:53:21.987587Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /var/lib/mysql/ is case insensitive
2020-03-14T09:53:27.708440Z 0 [ERROR] [MY-010295] [Server] Could not set file permission for ca.pem
2020-03-14T09:53:27.708719Z 0 [ERROR] [MY-013236] [Server] The designated data directory /var/lib/mysql/ is unusable. You can remove all files that the server added to it.
2020-03-14T09:53:27.709077Z 0 [ERROR] [MY-010119] [Server] Aborting
2020-03-14T09:53:29.169116Z 0 [System] [MY-010910] [Server] /usr/sbin/mysqld: Shutdown complete (mysqld 8.0.19) MySQL Community Server - GPL.

( ゚Д゚)ハァ? 余計悪化した。。。
ちょっと掘り下げてみるか。。。

permissionって書いてあるから権限回りだろう・・・( ゚д゚)ハッ!
そういえばこのDocker設定作ったのはMac野郎だった。

docker-compose.yml
  mysql:
    image: mysql:8.0
    ports:
      - 3306:3306
    user: "500:500"
    volumes:
・・・・

やっぱり。
WSL上のuserIDとdocker上のuserIDがあってない。
WSL上のUIDを確認してみよう。

C:\> wsl
$ id
uid=1000(dozo) gid=1000(dozo) groups=1000(dozo),・・・

docker-compose.ymlを調整

docker-compose.yml
  mysql:
    image: mysql:8.0
    ports:
      - 3306:3306
    user: "1000:1000"
    volumes:
・・・・

Mysqlのデータを全削除。
イメージを削除して、コンテナを再構成

$ rm -Rf /mnt/c/Users/magic/mysql/data/*
$ docker rm bc57ea450000
bc57ea450000
$ docker rmi 9b51d9270000
Untagged: mysql:8.0
Untagged: mysql@sha256:4a30434ce03d2fa39
・・・
79e9d07a19e3a8d49010ab9c98a2c348fa116c87
$ docker-compose up -d --build mysql
Creating laradock_mysql_1 ... done

直った・・・。

7
3
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
7
3