Интерфейсное развертывание, понятное Xiaobai (docker+nginx+jenkins)

CI/CD

предисловие

вместе сdevopsС развитием , интерфейсное развертывание стало более простым и контролируемым.docker🐳+nginx+jenkinsКонкретный эффект реализации для реализации процесса автоматизированного развертывания переднего плана заключается в том, что разработчики разрабатывают локально, разрабатывают и отправляют код в указанную ветку, 😊 Автоматически запускают jenkins для непрерывной интеграции и автоматического развертывания. После завершения развертывания вы получите уведомление по электронной почте.После успешной сборки упакованный файл будет загружен на сервер.nginxСтраница презентации обратного прокси. Если сборка не удалась, распечатывается журнал ошибок. а такжеdocker🐳 — очень важная часть всего нашего плана развертывания.dockerСтроительные зеркала обеспечивают единство окружающей среды🐂🍺.

Цель развертывания

  • Сборка среды docker🐳, nginx, jenkins
  • Настройте docker-compose.yaml

среда сборки

В этой статье используется облачный сервер centos7.

докер среда

Если все правыdocker,docker-composeЕсли вам что-то непонятно, вы можете пойти восполнить свои знания в этой области, и я не буду здесь вдаваться в подробности.

Если вам интересно, вы можете прочитать мою статьюЭтой статьи достаточно, чтобы Xiaobai выучил докер (рекомендуемая коллекция)

Перед установкой docker давайте взглянем на определение версии docker, которое поможет нам выбрать и использовать подходящую версию Docker в будущих разработках. Для докера он делится на две серии:

  • Издание для сообщества (CE)
  • Корпоративная версия (ee)

Разница между платой Community Edition и Enterprise Edition Enterprise Edition заключается не в чем ином, как в предоставлении дополнительных услуг.

 sudo yum install yum-utils device-mapper-persistent-data lvm2
 sudo yum-config-manager --add-repo \
   https://download.docker.com/linux/centos/docker-ce.repo
 sudo yum install docker-ce

Если ничего другого, введитеdocker -vПоявится следующая страница, что означает успех

 sudo systemctl enable docker // 设置开机自启 
 sudo systemctl start docker //  启动docker

Установить докер-компоновку

Полное приложение часто состоит не из контейнера, а из группы контейнеров. При построении группы контейнеров необходимо выполнять слишком много команд и, что более важно, необходимо учитывать слишком много зависимостей между приложениями и контейнерами, что представляет собой большую волну операций. docker-compose призван решить проблему управления несколькими контейнерами.

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Введите команду для установкиdocker-compose, повысить привилегии после завершения установки

sudo chmod +x /usr/local/bin/docker-compose

После выполнения вышеуказанной команды случайный ввод невозможен.docker-componse -vОтображается следующая страница

Установите среду jenkins и nginx.

Среды jenkins и nginx извлекаются из удаленной библиотеки образов докеров.

docker pull jenkins/jenkins:lts
docker pull nginx 

Рекомендуемая установка здесьjenkins/jenkinsэто зеркало,jenkinsОбраз официально поддерживается докером и давно не поддерживается.jenkins/jenkinsЭто библиотека, официально поддерживаемая Дженкинсом. Частота обновления очень к месту. После lts означает долгосрочную поддержку.

Выполнить после завершения установкиdocker imagesВы можете четко видеть изображения, которые существуют под текущим докером.

Напишите каталог docker-compose

Структуру каталогов здесь можно понимать как файлы конфигурации и тома монтирования, необходимые для построения среды.Подобно созданию проекта разработки программного обеспечения, рекомендуется объединить компоненты проекта Docker Compose в файловый каталог, который более удобен для наша разработка Управляйте и переносите. Структура каталогов выглядит следующим образом 👉

+ compose
  - docker-compose.yml  // docker-compose执行文件
+ nginx 
  + conf.d
    - nginx.conf        // nginx配置
+ jenkins
  - jenkins_home       // jenkins挂载卷
+ webserver            
  -static              //存放前端打包后的dist文件

Для простоты структура каталогов на моей стороне размещена непосредственно под home.Конечно, вы также можете создать новый каталог.

Напишите docker-compose.yml

version: '3'
services:                                      # 集合
  docker_jenkins:
    user: root                                 # 为了避免一些权限问题 在这我使用了root
    restart: always                            # 重启方式
    image: jenkins/jenkins:lts                 # 指定服务所使用的镜像 在这里我选择了 LTS (长期支持)
    container_name: jenkins                    # 容器名称
    ports:                                     # 对外暴露的端口定义
      - 8080:8080
      - 50000:50000
    volumes:                                   # 卷挂载路径
      - /home/jenkins/jenkins_home/:/var/jenkins_home  # 这是我们一开始创建的目录挂载到容器内的jenkins_home目录
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker                # 这是为了我们可以在容器内使用docker命令
      - /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
  docker_nginx:
    restart: always
    image: nginx
    container_name: nginx
    ports:
      - 8090:80
      - 80:80
      - 433:433
    volumes:
      - /home/nginx/conf.d/:/etc/nginx/conf.d
      - /home/webserver/static/jenkins/dist/:/usr/share/nginx/html

написать nginx.conf

server{
  listen  80;
  root /usr/share/nginx/html;
  index index.html index.htm;
}

Запустить докер-композицию

Вернитесь в каталог компоновки

docker-compose up -d

войтиdocker psПроверить состояние контейнераКак показано на рисунке выше, рабочее состояние указывает на то, что оно включено, и нет ничего случайного в том, что IP-адрес браузера плюс номер порта 8080

Обратите внимание, вашего пароля там нет/var/jenkins/jenkins_home/Далее в исходной конфигурацииdocker-compose.ymв лvolumesсередина/home/jenkins/jenkins_home/

Получив пароль для входа, устанавливаем推荐的插件

Установите плагин Дженкинс

Перед этим подготовьте проект vue, сгенерированный vue-cli, и поместите проект в gitlab.

  • jenkins установить необходимые плагиныgitlab,Publish Over SSH,nodejs

Нажмите «Установить напрямую», чтобы установить плагин. После завершения установки настройте среду nodejs и параметры ssh. Выбрать на главной страницеglobal tool Configuration>NodeJSВыберите автоматическую установку и соответствующий номер версии nodejs, нажмите «Сохранить» после успешного выбора.настроить информацию ssh,Manage Jenkins>configure SystemЗаполните соответствующую информацию о сервере

Дженкинс интегрируется с gitlab

сгенерировать ключ

  • Сгенерировать ssh-ключ на сервере (если он уже существует, генерировать его не нужно)

сгенерировать команду

ssh-keygen -t rsa

закрытый ключ, который будет сгенерированid_rsaдобавить в учетные данные jenkins

Войдите в gitlab, наgitlabСредняя конфигурацияid_rsa.pubоткрытый ключ

Новый проект

После подготовки начните создавать новую задачу, выберите新建item>freestyle projectСоздайте проект для фристайла.

управление исходным кодом

После завершения нового творения в源码管理Настройте информацию git вcredentialsВыберите учетные данные, которые мы только что добавили

триггер сборки

существует构建触发器中Выберите, когда мы запускаем сборку, вы можете выбрать крючок вашего товарища по команде, напримерpushкогда код,Merge Requestвремя ждать.

нажмите高级选项оказатьсяsecret token>GenerateСгенерировать значение токена

После того, как вы успешно настроили здесь, вам также нужно перейти вgitlabДобавьте соответствующие хуки в . Обратите внимание на картинку вышеwebhookURL(обведены красным) иsecret tokenзначение, перейдите на gitlab для настройки.

среда сборки

Среда сборки выберите среду узла

Построить

Настройте команду пакета узла, загрузите сжатый файл дистрибутива на удаленный сервер после завершения пакета,remote directoryустраненstaticФайл ниже, каталог веб-сервера здесь - это каталог, написанный в началеНа этом наша настройка подошла к концу, нажимаем Сохранить. изменить код,git push, вы обнаружите, что проект автоматически начал собираться 😊

❤️Спасибо всем

1. Если статья поможет вам, пожалуйста, наведите указательный палец на похвалу 👍, ваша похвала является движущей силой моей работы.

2. Следуйте официальному аккаунту «Фронтальная элита»! Отправить высококачественные статьи время от времени.