Создадим проект (папку) и назовем ее 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
После перезапуска проекта, перезапускаем браузер и проверяем, что все работает