Jenkins Docker Container mit Docker und Subversion erweitern
Möchte man im Jenkins zusätzlich die Commands svn und docker haben, müssen wir das Original Image um diese Layer erweitern.
Dazu erstellen wir uns ein Dockerfile, wo wir das gewünschte Jenkins Container Image (jenkins/jenkins:2.332.3-lts-jdk11) benutzen.
jenkns:~$ vi ~/Dockerfile
Inhalt des Dockerfile
FROM jenkins/jenkins:2.332.3-lts-jdk11
ARG DEBIAN_FRONTEND=noninteractive
USER root
RUN apt update -y \
    && apt install -y ca-certificates gnupg lsb-release subversion dnsutils net-tools 
RUN groupadd -g 998 docker
RUN mkdir -p /etc/apt/keyrings
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
RUN echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
RUN apt update && apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
RUN usermod -a -G docker jenkins
USER jenkins
Nun erstellen wir uns das Volumeverzeichnis jenkins_home, was im Container mit /var/jenkins_home gemappt wird.
jenkins:~$ mkdir -p ~/jenkins_home
Danach erstellen wir uns noch eine ~/.dockerignore Datei, in der wir das erstellte JENKINS_HOME Verzeichnis jenkins_home eintragen.
vi ~/.dockerignore
Inhalt der ~/.dockerignore
jenkins_home/
Nachdem wir das Dockerfile erstellt haben, erstellen wir uns folgende ~/docker-compose.yml Datei.
jenkins:~$ vi ~/docker-compose.yml
Inhalt der docker-compose.yml
version: '3.3'
services:
  jenkins:
    container_name: jenkins-svn-docker
    build: .
    ports:
      - 8080:8080
      - 50000:50000
    environment:
      - TZ=Europe/Berlin
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./jenkins_home:/var/jenkins_home
    restart: always
Uns zum Schluss starten wir unseren Container. Beim ersten Aufruf wird das Image gebaut und anschließend gestartet.
jenkins:~$ docker-compose up -d