Debian(WSL2)+Docker+PhpStormの環境構築
WSL 2上にDebianをインストールした際の淡々とした記録です。
(追記:2022/03/06)
だったけど、記事の大型アップデートを実施。
DockerをWSLへ設定し、PhpStormからtcp接続するための記事です。
アプリインストール
sudo apt update && sudo apt dist-upgrade
sudo apt install wget curl make git vim
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.profile
curl https://get.volta.sh | bash
source ~/.profile
brew install tfenv
tfenv install latest
tfenv use latest
volta install node@lts
volta install pnpm
sudo echo "VOLTA_FEATURE_PNPM=1" >> .profile
source ~/.profile
Docker Desktop for Windowsとの連携
- Settings | Resources | WSL INTEGRATION
- Enable integration with additional distros: で使いたいディストロをON
一番やりたかったDocker Desktop for Windowsを使ったWSL上での呼び出し。
ディストロが1つしか入っていない場合、デフォルトのディストロには自動でWSLインテグレーションシステムが発動する。
しかし、2つ以上の場合は、指定してONにしないとDocker Desktopとの連携が取れない。
この設定をすればWSL2上で docker
コマンドが使えるようになる。
Docker on WSL2
Docker Desktopが有料化したことを受け、DockerをWSL2のDebianへインストールする。
まずは公式通りに。Docker Composeはこちらから。そして、そのままでは docker run
できない。WSL2側で動作しないので、追加で下記作業する。
$ sudo touch /etc/fstab
$ sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
$ sudo service docker start
Docker Composeを別途インストールする
Compose V2になると、Compose自体がプラグインとして分離しているので別途インストール。
$ DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
$ mkdir -p $DOCKER_CONFIG/cli-plugins
$ curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
$ chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
Docker on WSL2とPhpStormを接続する
SSH接続
まずは手軽にSSHで接続方式。
$ sudo apt install openss-server
$ sudo vim /etc/ssh/sshd_config
# 適当にポートやセキュリティ設定を変える
$ sudo service ssh start
とりわけ接続が遅いなどは感じられないので大丈夫そう。
あとはPhpStormの File | Settings | Build, Execution, Deployment | Docker
からDockerへの接続にSSHを選択。
TCP接続
汎用的な接続方法としてはこちらっぽい。
サーバー内の設定をいろいろと変更する必要はある。
$ mkdir /etc/systemd/system/docker.service.d
$ sudo vim /etc/systemd/system/docker.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
$ sudo vim /etc/docker/daemon.json
{"hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"]}
$ sudo service docker restart
※2375はポート番号なので、もちろん好きなように変更可能
最後に、PhpStormの File | Settings | Build, Execution, Deployment | Docker
から TCP Socker
を選択。
Engine API URL
に http://localhost:2375
を設定。
PhpStormのrun/debugでのdocker-composeのtcp接続
Run/DebugからDocker Composeを実行する場合、tcp接続できるようにしておく必要がある。
方法は二通り。
- .envを使用
- run/debugに環境変数を追加
- OSの環境変数に設定
.envを使用
-
.envはdocker-compose.ymlと同じフォルダー階層に設置。
-
.envに下記二行を追加
DOCKER_HOST=tcp://localhost:2375 COMPOSE_CONVERT_WINDOWS_PATHS=1
- DOCKER_HOST: Dockerのリモート接続の接続先URL
- COMPOSE_CONVERT_WINDOWS_PATHS: WindowsのパスをUnixパスへ変換する。
DOCKER_HOSTは必須だが、その他の環境変数は必要に応じて。
ただ、Docker on WSL + tcp接続 + PhpStormの組み合わせだとうまく動かないので、その場合2.の方が確実。
Run/Debugに環境変数を追加
-
Run/Debug Configurations
ウィンドウを開く - Dockerの設定を選択
-
Modify options
からEnvironment variables
を選択 - Environment variablesの枠に下記を入力DOCKER_HOSTは必須だが、その他の環境変数は必要に応じて。
DOCKER_HOST=tcp://localhost:2375;COMPOSE_CONVERT_WINDOWS_PATHS=1
- OK
以上
今後また何かあれば随時更新予定。
Discussion