WSLのDockerでJenkinsを動かしてみようと思い、軽い気持ちでdocker-compose up -d
を走らせてみたところ、どエライ地雷を踏んでしまいました。そして、見事に爆死!!
子供の保育園を送迎する並の軽い作業が火事場の人命救助並に難易度となってしまった... orz
WSL2が待ち遠しい...
前提
- WSL+Docker環境が構築済みであること。まだの人はここを参考にしてみてください
失敗パターン
簡単に失敗パターンを紹介します
docker-compose.ymlを作成
version: '3'
services:
jenkins_master:
image: jenkins/jenkins:lts-jdk11
environment:
- JENKINS_OPTS=--prefix=/jenkins
- TZ=Asia/Tokyo
- HTTP_PROXY=${http_proxy}
- HTTPS_PROXY=${https_proxy}
- JAVA_OPTS=-Dhttp.proxyHost=${PROXY_HOST} -Dhttp.proxyPort=${PROXY_PORT} -Dhttp.proxyUser=${PROXY_USER} -Dhttp.proxyPassword=${PROXY_PASS} -Dhttps.proxyHost=${PROXY_HOST} -Dhttps.proxyPort=${PROXY_PORT} -Dhttps.proxyUser=${PROXY_USER} -Dhttps.proxyPassword=${PROXY_PASS}
ports:
- '18080:8080'
- '15000:5000'
volumes:
- ./jenkins_home:/var/jenkins_home
- ~/.m2:/var/m2
docker-compose 実行
docker-compose up -d
結果
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
ほうほう、ならば権限を設定してあげようではないか。
sudo chown -R 1000 ./jenkins_home
再実行の結果1
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
ほうほう、ならばWSLからマウントしたWindowsのドライブでパーミッションを扱えるようにしてみようじゃないか。
sudo vim /etc/wsl.conf
[automount]
options = "metadata"
再実行の結果2
touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
...
...
...
...
成功パターン
Windowsファイルシステムを絡むとややこしいな…
WSLの中でVolume作るか。
docker volume作成
docker volume create jenkins_home
docker-compose.ymlを修正
version: '3'
services:
jenkins_master:
image: jenkins/jenkins:lts-jdk11
environment:
- JENKINS_OPTS=--prefix=/jenkins
- TZ=Asia/Tokyo
- HTTP_PROXY=${http_proxy}
- HTTPS_PROXY=${https_proxy}
- JAVA_OPTS=-Dhttp.proxyHost=${PROXY_HOST} -Dhttp.proxyPort=${PROXY_PORT} -Dhttp.proxyUser=${PROXY_USER} -Dhttp.proxyPassword=${PROXY_PASS} -Dhttps.proxyHost=${PROXY_HOST} -Dhttps.proxyPort=${PROXY_PORT} -Dhttps.proxyUser=${PROXY_USER} -Dhttps.proxyPassword=${PROXY_PASS}
ports:
- '18080:8080'
- '15000:5000'
volumes:
- jenkins_home:/var/jenkins_home
- ~/.m2:/var/m2
volumes:
jenkins_home:
external: true
docker-compose 実行
今度こそ。
docker-compose up -d
キターーーーーー!!
パスワード??
あぁ、コンテナに入ってみてみるか~
docker exec -it jenkins_master_1 /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
あとは、画面指示に従って次へ次へと進みます。
まとめ
WSL2が待ち遠しい...(2回目)