本ページに直接来た方は[WSL2+docker+PHPのWindows開発環境構築(1) WSL2編]から読んでね。
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
------------------- ↓ 余談はここから ↓-------------------
[Laradock]:http://laradock.io
[WSL2+docker+PHPのWindows開発環境構築(1) WSL2編]:https://qiita.com/dozo/items/9d9e958d4acefffb3fb8
[WSL2+docker+PHPのWindows開発環境構築(2) docker編]:https://qiita.com/dozo/items/17d0ebfb05bb4446caed
[WSL2+docker+PHPのWindows開発環境構築(3) PHPStorm編]:https://qiita.com/dozo/items/7bc21b59bae91bfd1ae1
関連記事:
- Bash on Ubuntu on Windowsを使う(1)
- Bash on Ubuntu on Windowsを使う(2):初期設定
- Bash on Ubuntu on Windowsを使う(3):WindowsからLinuxを使う
- [WSL2+docker+PHPのWindows開発環境構築(1) WSL2編]
- [WSL2+docker+PHPのWindows開発環境構築(2) docker編]
- [WSL2+docker+PHPのWindows開発環境構築(3) PHPStorm編] ← イマココ
前回docker起動までいけた。
あとはPHPStormと繋げれば良い。
('ω')ノ あとすこしやで
------------------- ↓ 本題はここから ↓-------------------
Dockerの調整
タスクバーのdockerアイコンから「setting」を選択
以下にチェックを入れて「Appli&Restart」
Expose daemon on tcp://localhost:2375 without TLS
PHPStormの調整
Pluginのインストール
兎にも角にもプラグイン。
Docker
とPHP Docker
をインストール
[File]-[Setting]-[Plugins]から以下の二つをインストール
Docker
PHP Docker
(PHP Remote Interpreter
ってのも一緒に入る)
Docker Pluginの設定
「Build, Execution, Deployment」-「Docker」-「+」を押下
「TCP socker」にチェックを入れて「OK」を押下
PHP Pluginの設定
「Languages & Frameworks」-「PHP」-「Cli Interpreter」-「...」を押下
「Cli Interpreters」欄の「+」を押下、
「From Docker, Vagrant, Vm, WSL, Remote...」を押下する。
「Image Name」欄の「▼」を押し、
「laradock_php-fpm:latest」を選択
コード補完が効いていたら成功だ。
これで実際の開発に入ることができるだろう。
(゜-゜) こんなに頑張らないと物作れないってどうなんだろ・・・。
このあと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野郎だった。
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を調整
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
直った・・・。