Help us understand the problem. What is going on with this article?

WSL + Docker + Jenkins + Proxyの地雷を解決する

More than 1 year has passed since last update.

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

2019-11-18-18-53-05.png

キターーーーーー!!

パスワード??

あぁ、コンテナに入ってみてみるか~

docker exec -it jenkins_master_1 /bin/bash

cat /var/jenkins_home/secrets/initialAdminPassword

あとは、画面指示に従って次へ次へと進みます。

まとめ

WSL2が待ち遠しい...(2回目)

dongsu-iis
Husband | Father | Engineer | Developer | SIer
https://dongsu.dev/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away