1台のマシンでJenkinsをdocker-composeで立ち上げて自分自身を slaveに追加する

昔々、あるところにUbuntu20.04が動いている1台のNUCがいました。
おじいさんはこんなdocker-compose.ymlを書いてJenkinsおじさんを召喚しました。

version: "3"
services:
  jenkins1:
    container_name: master
    image: jenkins/jenkins:lts
    environment:
      TZ: Asia/Tokyo
    ports:
      - 8080:8080
    volumes:
      - ./jenkins_home:/var/jenkins_home
    restart: always

さて、これでcrontabで動いてたバッチをJobに移行できるぞい。
しかし、JenkinsのJobを作って実行したところ、/usr/bin/dateがありませんと言われてしまった。
なるほど、Jenkinsコンテナの中でシェルスクリプトを実行してしまってるのか。
じゃあsshするslaveとしてホストマシン自身を追加しよう。そう思ったおじいさんはおもむろにこんなymlを書いてJenkinsコンテナを立ち上げ直したぞ。

  • docker-compose.override.yml
version: "3"

services:
  jenkins1:
    extra_hosts:
      - "host.docker.internal:host-gateway"

これでコンテナからhost.docker.internaの名前でホストマシンにsshできるぞい。
無事slaveも追加して、と。
おや、slave起動したらjavaがないと怒られた。
仕方ないホストマシンにjdkインストールじゃ。

sudo apt install default-jdk

再度slaveを起動して、、、、っと。

無事成功じゃ。

こうしておじいさんはJenkinsコンテナとJobが動く1台のNUC環境を手に入れたのでした。

めでたしめでたし。