Skip to content

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