Адрес фактического центра электронной коммерции SpringBoot (30k+star):GitHub.com/macro-positive/…
Резюме
Навыки автоматизированного развертывания SpringBoot+Jenkins, также применимо удаленное развертывание с общими сценариями автоматизации! В этой статье мы начнем с полуавтоматического развертывания и перейдем к автоматизированному развертыванию, а также объясним набор решений для автоматического развертывания, пригодных для производственных сред!
Полуавтоматическое развертывание
Все написанные ранее образы Docker, упакованные приложением SpringBoot, реализуются через подключаемый модуль Maven.Поскольку удаленному серверу необходимо разработать порт 2375, существуют определенные риски безопасности. На этот раз представлен другой метод, который развернут в виде DockerFile+Jar+скрипт автоматизации. Из-за требуемых ручных усилий я называю это полуавтоматическим развертыванием.
Упаковка проекта
- На этот раз мы не используем подключаемый модуль Docker Maven для упаковки.
pom.xml
закомментируйте это;
- Затем используйте команду пакета Maven, чтобы напрямую ввести приложение в пакет Jar;
- в это время в
target
В каталоге будет сгенерирован пакет Jar, который будет использоваться при упаковке образа Docker.
DockerFile
В основном он определяет, как упаковать пакет Jar в образ Docker. Друзья, которые не знают о DockerFile, могут его посмотреть.«Использование Dockerfile для создания образов Docker для приложений SpringBoot», детали следующие.
# 该镜像需要依赖的基础镜像
FROM java:8
# 将当前目录下的jar包复制到docker容器的/目录下
ADD mall-tiny-jenkins-1.0-SNAPSHOT.jar /mall-tiny-jenkins-1.0-SNAPSHOT.jar
# 声明服务运行在8088端口
EXPOSE 8088
# 指定docker容器启动时运行jar包
ENTRYPOINT ["java", "-jar","/mall-tiny-jenkins-1.0-SNAPSHOT.jar"]
# 指定维护者的名字
MAINTAINER macro
сценарий автоматизации
Скрипт-шаблон, который можно использовать как обычный скрипт, нужно лишь изменить некоторые параметры, конкретный процесс выполнения: остановить старый сервис -> удалить старый контейнер -> удалить старый образ -> упаковать новый образ -> запустить новый образ.
#!/usr/bin/env bash
# 定义应用组名
group_name='mall-tiny'
# 定义应用名称
app_name='mall-tiny-jenkins'
# 定义应用版本
app_version='1.0-SNAPSHOT'
# 定义应用环境
profile_active='qa'
echo '----copy jar----'
docker stop ${app_name}
echo '----stop container----'
docker rm ${app_name}
echo '----rm container----'
docker rmi ${group_name}/${app_name}:${app_version}
echo '----rm image----'
# 打包编译docker镜像
docker build -t ${group_name}/${app_name}:${app_version} .
echo '----build image----'
docker run -p 8088:8088 --name ${app_name} \
--link mysql:db \
-e 'spring.profiles.active'=${profile_active} \
-e TZ="Asia/Shanghai" \
-v /etc/localtime:/etc/localtime \
-v /mydata/app/${app_name}/logs:/var/logs \
-d ${group_name}/${app_name}:${app_version}
echo '----start container----'
Вот некоторые вещи, которые стоит отметить в сценарии автоматизации:
-
group_name
,app_name
,app_version
Может использоваться для определения свойств упакованного образа; -
profile_active
Вы можете заставить свое приложение использовать конфигурацию в разных средах, например, используяqa
Конфигурация тестовой среды может быть включена с помощьюprod
Конфигурация производственной среды может быть включена, настоящий многоцелевой пакет; -
docker rmi
Этот шаг необходимо выполнить.Если старый образ не удалить, он будет сгенерирован при упаковке нового образа.none
зеркальное отражение; -
docker run
в команде-e TZ="Asia/Shanghai"
Должен быть установлен часовой пояс, иначе время контейнера будет отставать от хоста на 8 часов.
Развернуть и запустить
- Непосредственно загрузите пакет Jar нашего приложения, файл DockerFile и сценарий автоматического развертывания в указанный каталог;
- Измените сценарий автоматизации, чтобы он стал исполняемым;
chmod +x run.sh
- использовать
./run.sh
Команда для прямого запуска скрипта.
Автоматическое развертывание с Jenkins
Предыдущая упаковка и загрузка файлов были сделаны нами вручную, на самом деле эти операции также могут быть реализованы Jenkins для нас, с Jenkins это можно рассматривать как настоящее автоматизированное развертывание!
дошкольная подготовка
Чтобы изучить следующий контент, вам нужно иметь определенное представление о Дженкинсе. Друзья, которые не знают, могут его прочитать:«Используйте Jenkins для упаковки и развертывания приложений SpringBoot одним щелчком мыши, это все 6! 》
Publish Over SSH
Рекомендуется установить этот плагин Jenkins, его основная функция — передача файлов и выполнение команд между разными серверами через SSH. Например, если мы установили Jenkins на тестовом сервере, мы можем использовать Jenkins для получения кода из репозитория Git на тестовом сервере, а затем превратить его в пакет Jar. После завершения упаковки мы можем перенести пакет Jar на официальный сервер с помощью этого плагина, а затем выполнить скрипт автоматизации на официальном сервере, чтобы реализовать автоматическое развертывание на официальном сервере.
- Сначала мы можем
系统管理->插件管理
Найдите плагин и установите его;
- затем в
系统管理->插件管理
Добавьте соответствующую конфигурацию SSH в;
- После завершения настройки создайте задачу сборки приложения,
源码管理
и构建
Конфигурация упаковки Maven в Jenkins такая же, как и в предыдущем руководстве по Jenkins, отличается только последний шаг, добавление шага сборки как通过SSH发送文件并执行命令
;
- настроить наш
SSH Publisher
, в основном путь к исходному файлу и путь к целевому файлу, а также сценарий, который необходимо выполнить;
- Затем выполните задачу сборки для автоматического развертывания, этот метод также работает между двумя разными серверами!
Суммировать
Из нескольких статей об автоматическом развертывании, которые я написал, видно, что автоматическое развертывание в Linux в основном достигается с помощью ряда команд Linux. Автоматическое развертывание Jenkins также основано на них, поэтому, чтобы научиться автоматизировать развертывание, необходимы команды Linux и команды Docker!
Адрес исходного кода проекта
публика
проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на публичный аккаунтПолучите это прямо сейчас.