Установка Jenkins в Docker Compose

Введение

С помощью Docker Compose можно создавать инфраструктуру, где контейнер с Jenkins будет находится в одной локальной сети с контейнерами над которыми планируется применять CI/CD практики.

В этом примере будет использован официальный образ Jenkins . Он имеет в основе Debian Linux поэтому в нём возможна установка дополнительных утилит с помощью apt-get.

Требования

Предварительно нужно установить Docker Compose

Структура проекта

Структура выглядит следующим оригинальным образом

qa-demo-project ├── docker-compose.yml ├── dockerfiles │ ├── Dockerfile.jenkins └── GNUmakefile

Содержимое файлов

# docker-compose.yml services: jenkins: # image specified in Dockerfile # image: jenkins/jenkins:lts restart: always privileged: true user: root build: context: ./dockerfiles dockerfile: Dockerfile.jenkins args: buildversion: 1 ports: - "8080:8080" - "50000:50000" container_name: jenkins networks: net1: ipv4_address: 10.5.0.6 jenkins: ipv4_address: 10.7.0.6 volumes: - /var/run/docker.sock:/var/run/docker.sock networks: net1: driver: bridge ipam: config: - subnet: 10.5.0.0/16 gateway: 10.5.0.1 jenkins: driver: bridge ipam: config: - subnet: 10.7.0.0/16 gateway: 10.7.0.1

Dockerfile.jenkins

FROM jenkins/jenkins:2.506-jdk17 USER root RUN apt-get update && apt-get install -y lsb-release RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \ https://download.docker.com/linux/debian/gpg RUN echo "deb [arch=$(dpkg --print-architecture) \ signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \ https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list RUN apt-get update && apt-get install -y docker-ce-cli USER jenkins RUN jenkins-plugin-cli --plugins "blueocean:1.25.7 docker-workflow:611.v16e84da_6d3ff"

GNUmakefile

PHONY: jenkins-docker jenkins-docker: # docker compose build jenkins docker compose up -d jenkins docker exec -it jenkins bash

Автор статьи: Андрей Олегович