Создадим проект (папку) и назовем ее jenkins, внутри нее будем создавать файлы/папки.

Создаем файл docker-compose.yml с таким вот содержимым

version: '3.7'
services:
    nginx:
        image: nginx:alpine
        ports:
            - "8000:8000"
        volumes:
            - ./docker/development/nginx/conf.d:/etc/nginx/conf.d
        depends_on:
            - jenkins

    jenkins:
        build:
            context: ./docker/common/jenkins
        environment:
            DOCKER_HOST: tcp://docker:2376
            DOCKER_CERT_PATH: /certs/client
            DOCKER_TLS_VERIFY: 1
        volumes:
            - jenkins-data:/var/jenkins_home
            - docker-certs:/certs/client:ro
        depends_on:
            - docker
   docker:
        image: docker:dind
        privileged: true
        environment:
            DOCKER_TLS_CERTDIR: /certs

volumes:
            - jenkins-data:/var/jenkins_home
            - docker-certs:/certs/client
            - docker-data:/var/lib/docker

создаем файл Makefile и сделаем для себя нужные команды, для запуска перезапуска и так далее

init: docker-down docker-pull docker-build docker-up
up: docker-up
down: docker-down

docker-up:
	docker-compose up -d

docker-down:
	docker-compose down --remove-orphans

docker-pull:
	docker-compose pull

docker-build:
	docker-compose build --pull

show-initial-password:
	docker-compose exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

Из текста понятно, что за команды можно выполнять

запускаем команду из проекта make init после сборки запускаем браузер и открываем адрес localhost:8000 и нас встречает такая страница

Jenkins просит нас прочитать файл и его содержимое ввести в данную строку, что бы просмотреть нам надо выполнить команду

docker-compose exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

это содержимое введем в строку и нажимаем далее

Выбираем тип установки, с наиболее популярными пакетами установить или же сами выбираем что нам требуется для установки

Я выбрал первый вариант, предполагаемые пакеты. 

Далее создаем своего первого пользователя, вводил логин мыло и свой пасс

Далее нажимаем сохранить и продолжить и нас встречает вот такой интерфейс

Вот и готов наш проект jenkins, тут можно посмотреть как его обновить, а тут как очистить от старых записей.

Но мы желаем в дальнейшем использовать в локальной разработке или вывод его в продакшн и использовать протокол https letsencrypt

создаем в нашем проекте папки docker/development/nginx/conf.d и создаем файл jenkins.conf вот с таким содержимым

server {
    listen 8000;
    server_tokens off;

    location / {
        proxy_pass         http://jenkins:8080;
        proxy_set_header   Host          $http_host;
        proxy_set_header   X-Real-IP     $remote_addr;
        proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Proto $scheme;
        proxy_read_timeout 900;
    }
}

и немного подправлю docker-compose.yml добавлю в него nginx в самом начале я уже сделал правки

Перезапускаем наш проект командой make init

Все перезапустим браузер и видим что все работает нас только разлогинило.

Далее создаем в корне еще папки common/jenkins

создаем там Dockerfile с таким вот содержимым

FROM jenkinsci/blueocean

USER root

RUN apk add --no-cache py-pip python3-dev libffi-dev openssl-dev gcc libc-dev rust cargo make gettext \
    && pip3 install docker-compose

USER jenkins

Я очень надеюсь, что вы понимаете что в данном файле будет происходить.

Пересоберем наш проект

make init

После перезапуска проекта, перезапускаем браузер и проверяем, что все работает

 

Яндекс.Метрика