Docker+Nginx+Jenkins реализует автоматическое развертывание переднего плана

Docker
Docker+Nginx+Jenkins реализует автоматическое развертывание переднего плана

Предварительная подготовка

· Один облачный сервер на базе системы Centos7.

·Проекты на основе Vue-cli развертываются поверх gitlab.

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

Создайте среду Docker+Nginx+Jenkins, чтобы реализовать процесс автоматизированного развертывания переднего плана. Конкретный эффект реализации заключается в том, что разработчики разрабатывают локально, отправляют код в указанную ветку и автоматически запускают jenkins для непрерывной интеграции и автоматического развертывания. Его можно настроить на уведомление по электронной почте после завершения развертывания.Независимо от того, успешно развертывание или нет, упакованный файл будет загружен на сервер после успеха, а страница будет отображаться через обратный прокси-сервер nginx.Если это не удается , будет распечатан соответствующий журнал ошибок.

Дружеское напоминание: попробуйте выбрать сервер Alibaba Cloud или Tencent Cloud, когда развернуты другие серверы, Jenkins может не запуститься нормально!

Построение среды Docker

Подключиться к облачному серверу

Вы можете выбрать онлайн-терминал, предоставляемый Alibaba Cloud или Tencent Cloud (иногда зависает), но для подключения рекомендуется использовать локальный компьютер. Введите команду подключения в терминале:

ssh root@你的服务器公网地址

После ввода пароля облачного сервера команда отображает результат следующим образом:

У Docker есть две версии форка: Docker CE и Docker EE, Community Edition и Enterprise Edition. В этом руководстве устанавливается Docker CE на основе CentOS 7.

Соединительная среда установки докера

1. Установите зависимости Docker.

yum install -y yum-utils device-mapper-persistent-data lvm2

2. Добавьте информацию об источнике программного обеспечения Docker CE.

sudo yum-config-manager --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

3. Установите DockerCE.

 sudo yum install docker-ce

4. Запустите службу Docker.

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

Докер установить docker-compose

инструменты docker-compose для определения и запуска нескольких приложений для контейнеров Docker. С помощью Compose вы можете использовать файл YML для настройки всех служб, необходимых приложению. Затем с помощью команды вы можете создать и запустить службу из всей конфигурации файла YML. Скачать докер-компоновку:

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

Повысить привилегии после установки:

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

войтиdocker-compose -vОтображается следующая страница

Docker устанавливает сервисы Nginx и Jenkins

Установите Nginx и Дженкинс

Образ докера извлекает команды среды nginx и jenkins следующим образом:

docker pull nginx
docker pull jenkins/jenkins:lts 

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

docker images

Написание каталогов Nginx и Jenkins

Для простоты управления мы объединяем Nginx и Jenkins в один файловый каталог под докером. Структура каталогов следующая:

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

Каталог веб-сервера относится к постгенерации и пока не будет обсуждаться.Каталоги compose, nginx и Jenkins и их подчиненные файлы необходимо создать вручную.Наиболее важными из них являются конфигурация файла docker-compose.yml. файл и файл nginx.conf. Вышеуказанные папки рекомендуется размещать в корневом каталоге, который можно поместить в домашнюю папку или создать новую папку отдельно.

конфигурация файла 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/dist:/usr/share/nginx/html

конфигурация файла nginx.conf

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

После того, как вышеприведенные два файла настроены, вам необходимо ввести следующую команду в каталоге / Home / Compose, чтобы начать окружающую среду:

docker-compose up -d
docker-compose stop //停止nginx和jenkins 两者结合可以进行重启

войтиdocker ps -aПроверьте состояние контейнера:

Отображается статус, и следующий номер порта показывает нормальное состояние, как указано выше. Введите общедоступный IP-адрес вашего облачного сервера и номер порта 8080 в браузере, чтобы отобразить следующую страницу:

будь осторожен:

**Перед этим шагом не забудьте открыть 80-портовую группу безопасности облачного сервера (см. предоставленную функцию активации одним щелчком), но рекомендуется вручную добавить 8080-портовую группу безопасности. **
_**Порт 80: это порт, открытый для HTTP (протокола передачи гипертекста). **_

Порт 8080: он используется для прокси-сервисов WWW, вы можете реализовать просмотр веб-страниц.

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

середина/home/jenkins/jenkins_home/secrets/initAdminPasswordсередина. Его можно получить с помощью следующей команды:

cat /home/jenkins/jenkins_home/secrets/initialAdminPassword 

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

После входа на страницу выберите Рекомендуемая установка.

После завершения установки выберите параметр «Управление Jenkins» слева. Как показано ниже:

Управление плагинами в jenkins ищет следующие плагиныgitlab,Publish Over SSH,nodejsи установить.

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

настроить информацию ssh,Manage Jenkins>configure SystemЗаполнить информационный сервер

Ассоциация Jenkins и Gitlab

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

Выполните следующую команду в корневом каталоге:

ssh-keygen -t rsa

Как правило, по умолчанию введите дважды, как показано на следующем рисунке:

использоватьcd ~/.ssh, чтобы увидеть сгенерированные файлы.Скопируйте и вставьте сгенерированный ключ id_rsa в учетные данные в jenkins. как показано на рисунке:

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

Новый проект

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

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

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

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

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

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

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

Среда сборки и конфигурация сборки

После завершения приведенной выше настройки jenkins связывается с gitlab.Когда файл загружается локально, он будет автоматически создан, и доступ к измененному проекту можно будет получить, обратившись к общедоступному IP-адресу облачного сервера.Его также можно создать вручную на Дженкинса, например Как показано на рисунке:

заключительные замечания

Наконец, простой проект онлайн-развертывания завершен.Учащиеся, у которых есть доменное имя, могут выполнить облачное преобразование, чтобы сопоставить IP-адрес общедоступной сети, чтобы они могли использовать более узнаваемое доменное имя для разработки и запуска проекта.

Некоторые ссылки на статью:nuggets.capable/post/684490…Он совершенствуется во время развертывания и может нормально работать

Категории