これでDocker Hubから好きな環境ツカエル
ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪
関連ページ
------------------- ↓ 余談はここから ↓-------------------
WSL2を構築する上で使っていたUbuntuだが、
やっぱりちょっと重いなぁという印象がある。
PHPStorm自体をLinux上に置くとなると、
どうしてもLinux自体の重さが影響してくる。
最近の開発は動作環境はdocker上にあるのなら、
開発環境のLinux自体はUbuntuでなくても良いはず。
ということで前回苦戦したAlpineでの構築を再度試みる。
ただ何度か試したところNodeJSの最新版をインストールすることができなくて途方に暮れていた。
(・ω・) どうしよ・・・
あ、Dockerでalpine-nodeの最新版からWSLのディストリビューションを作れればいいんでない?
実は、Alpine WSLは実体を持たず、
インストーラーだけがパッケージされていて、
公式サイトのstable版が動的にインポートされる形になっている。
(゚_゚) だったらdockerから作れるんじゃね?
試しにやってみたらなんとかなったので記録しておく。
前提として
- Docker Desktop(Edge版)インストール済み
- WSL2が動作する(令和2年5月9日現在Insider Preview版)
------------------- ↓ 本題はここから ↓-------------------
Docker Hubよりコンテナ作成
この辺Dockerに未だに詳しくない私なので、
違ったら指摘してほしい。
Dockerコンテナ作成
Docker Hubより目的に合ったものを探す。
今回は最新のNodeJS14のAlpineLinuxという組み合わせでいく。
https://hub.docker.com/_/node?tab=tags
tag: node:14-alpine
PowerShellで実行
PS C:\> docker run -it node:14-alpine /bin/ash
/ # node -v
v14.2.0
/ # npm -v
6.14.4
/ # exit
DockerコンテナをOSイメージ化
コンテナをWSLインポートするためにOSイメージ化する
saveではなくexportを使用
PS C:\> docker ps -a # コンテナIDを表示
CONTAINER ID IMAGE COMMAND
09e4abfaf0f4 node:14-alpine "docker-entrypoint.s…"
PS C:\> docker export 09e4abfaf0f4 -o alpine-node.tar
WSLインポート
WSLインポートでOSイメージをWSL側に登録する。
OS名をAlpine
、インストール先をC:\Alpine
とすると
PS C:\> wsl --import Alpine C:\Alpine alpine-node.tar
PS C:\> wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop Running 2
Alpine Stopped 2
docker-desktop-data Running 2
早速起動してみる
PS C:\> wsl -d apline
# cat /etc/os-release
NAME="Alpine Linux"
ID=alpine
VERSION_ID=3.11.6
PRETTY_NAME="Alpine Linux v3.11"
HOME_URL="https://alpinelinux.org/"
BUG_REPORT_URL="https://bugs.alpinelinux.org/"
(・∀・) 意外と簡単だったね!
node入れるのに苦労したから、
今後はこれで使っていこう。
DebianのSlimバージョンでもやってみたらうまくいった。
なかなか使い勝手は良さそうだ。
------------------- ↓ 後書はここから ↓-------------------
ここからは初期設定の手順を残しておく。
やり方は人それぞれなので参考程度に。
OSはAlpine Linuxのまま。
ユーザー追加
最初に通常使うユーザーの追加とパスワードを設定しておく。
ユーザー名をnewuser
とすると
# adduser newuser
New password:
Retype new password:
passwd: password for dozo changed by root
# addgroup newuser wheel
sudoなど初期で必要なパッケージをインストール
# apk add sudo openssl-dev pkgconf shadow alpine-conf wget curl
# visudo
以下の行のコメントアウト(#)を消す
# %wheel ALL=(ALL) ALL
再起動
いったんWSLごと再起動し、
sudoのテストも実行。
PS C:\> wsl -t alpine
PS C:\> wsl -d alpine -u newuser
$ sudo test
WSL設定
この時点でネットワーク不良に陥っているので、
各種設定で調整していく。
wsl.conf設定
# vi /etc/wsl.conf
[automount]
enabled = true
options = "metadata, umask=22, fmask=11"
mountFsTab = false
crossDistro = true
[network]
generateHosts = false
generateResolvConf = false
[interop]
appendWindowsPath = false
[user]
default=newuser
resolv.conf設定
$ sudo setup-dns -d localhost -n 8.8.8.8
もう一度再起動
WSLごと再起動し、デフォルトユーザーが切り替わっているかを確認。
PS C:\> wsl -t alpine
PS C:\> wsl -d alpine
最新の環境を設定する
リポジトリをEdgeに変更
Alpine LinuxにはStableバージョンとしてV3.11のようなバージョン番号がついているが、
Latest扱いのEdgeというリポジトリがあるのでそちらを使う。
/etc/apk/repositoriesを以下のように変更
$ cat /etc/apk/repositories
http://dl-cdn.alpinelinux.org/alpine/edge/main
http://dl-cdn.alpinelinux.org/alpine/edge/community
パッケージを更新、最新に変更
$ sudo apk update
$ sudo apk upgrade
開発環境をインストール
コンパイラ系のパッケージを一式、
その他開発系のパッケージを追加。
$ sudo apk add build-base git
PHPStormのインストール
Javaのインストール
PHPStormを動かすためにJREを別途インストールする
$ sudo apk add openjdk11-jre
$ java --version
openjdk 11.0.6 2020-01-14
OpenJDK Runtime Environment (build 11.0.6+11-alpine-r1)
OpenJDK 64-Bit Server VM (build 11.0.6+11-alpine-r1, mixed mode)
PHPStormのインストール
$ wget https://download.jetbrains.com/webide/PhpStorm-2020.1.1.tar.gz
tar xvf PhpStorm-2020.1.1.tar.gz -C ~/opt/
X11のインストール
DISPLAY値の設定
$ echo "export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2; exit;}'):0.0" >> ~/.bashrc
テストアプリを実行
$ sudo add xeyes
$ xeyes &
/etc/hosts
54.72.98.183 download.jetbrains.com
Dockerのお掃除
Dockerを使うとゴミが大量発生するので
まとめて削除で綺麗にしておこう。
(※必要なものまで消さないように)
$ docker rm $(docker ps -aq)
$ docker rmi $(docker images -aq)