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