Jenkins--部署--1.1--打包Maven项目为Docker镜像并运行

Jenkins–部署–1.1–打包Maven项目为Docker镜像并运行


1、介绍

通过git上传代码—>使用Jenkins构建自动打包—>把jar包打成docker镜像,运行在docker中

2、linux安装jdk和maven

2.1、安装jdk11

https://blog.csdn.net/zhou920786312/article/details/76473912

2.2、安装maven(建议)

https://blog.csdn.net/zhou920786312/article/details/125832759

3、Docker安装Jenkins

参考

Jenkins--基础--02--安装
	Docker安装Jenkins(这是我部署的)

4、配置加速器

# 国内的插件仓库地址
http://mirror.xmission.com/jenkins/updates/current/update-center.json

5、配置ssh

目的是为了在linux中能执行shell脚本

5.1、安装ssh插件

在这里插入图片描述

安装完成重启一下Jenkins

5.2、添加ssh登录账号凭据

在这里插入图片描述

5.3、配置全局ssh

系统管理–>系统配置
在这里插入图片描述

在这里插入图片描述

6、配置jdk和maven

系统管理 —> 全局工具配置

在这里插入图片描述
在这里插入图片描述

7、git项目的核心代码

代码结构

在这里插入图片描述

7.1、application.yml

server:
  port: 8888
  servlet:
    context-path: /say

7.2、bootstrap.yml

spring:
  application:
    name: demo1

7.3、docker-entrypoint.sh

#!/bin/bash


# JVM参数
JAVA_OPTS=
#  当JAVA_JVM_OPTS1长度大于0时为真
if [ -n "${JAVA_JVM_OPTS1}" ] ; then
  JAVA_OPTS="${JAVA_OPTS} ${JAVA_JVM_OPTS1}"
fi

if [ -n "${JAVA_JVM_OPTS2}" ] ; then
  JAVA_OPTS="${JAVA_OPTS} ${JAVA_JVM_OPTS2}"
fi
#  当LOG_OPTS长度==0时为真
LOG_OPTS=
if [ -z "${LOG_OPTS}" ] ; then
  LOG_OPTS="-Dlogging.file.name=${LOG_FILE} -Dlogging.file.path=${LOG_PATH}"
fi

# 打印配置参数
echo "JVM启动参数:"${JAVA_OPTS}
echo "日志参数:"${LOG_OPTS}
java -server ${JAVA_OPTS} ${LOG_OPTS} -jar  /opt/app/app.jar

7.4、Dockerfile

FROM java:8
# 环境变量
# 内存参数
ENV JAVA_JVM_OPTS1=-Xms1024m
ENV JAVA_JVM_OPTS2=-Xmx1024m

#日志输出路径
ENV LOG_PATH=/var/log/demo1/
ENV LOG_FILE=/var/log/demo1/demo1.log


WORKDIR /opt/app

# 拷贝代码和配置文件
COPY *.jar /opt/app/app.jar
COPY ./config  /opt/app/config
# 拷贝脚本到可执行目录
COPY docker-entrypoint.sh /usr/local/bin/

EXPOSE 8888
# 授予权限
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

ENTRYPOINT ["docker-entrypoint.sh"]

7.5、业务代码

在这里插入图片描述

8、使用Jenkins部署项目

8.1、创建任务

hello_world_docker

在这里插入图片描述

8.2、general配置

打包Maven项目为Docker镜像并运行

在这里插入图片描述

8.2.1、丢弃旧的构建

  1. 问题:服务器资源是有限的,有时候保存了太多的历史构建,会导致Jenkins速度变慢,并且服务器硬盘资源也会被占满。
  2. 解决方案:
    1. 保持构建天数
    2. 保持构建的最大个数

8.3、源码管理

在这里插入图片描述
在这里插入图片描述

8.3.1、Git

支持主流的github和gitlab代码仓库。

8.3.2、Repository URL

仓库地址

8.3.3、Credentials

  1. 凭证
  2. 可以使用以下方式登陆git仓库
    1. HTTP方式的用户名密码
    2. RSA文件

8.3.4、Branches to build

  1. 构建的分支。
  2. */master表示master分支,也可以设置为其他分支。

8.3.5、源码浏览器

  1. 你所使用的代码仓库管理工具,如github, gitlab.

8.4、构建任务的触发器

不操作
在这里插入图片描述

8.4.1、触发远程构建(使用脚本)

该选项会提供一个接口,可以用来在代码层面触发构建。

8.4.2、其他工程构建后触发

在其他工程构建后构建

8.4.3、定时构建

  1. 每隔一段时间进行构建
  2. 日程表类似linux crontab书写格式。 列如
    1. 每隔30分钟进行一次构建:H/30 * * * * *

8.4.4、GitHub hook trigger for GITScm polling

当有更改push到gitlab代码仓库,即触发构建。

8.4.5、轮询 SCM

  1. 该选项是配合 2.3.4 使用的。
  2. 当代码仓库发生改动,jenkins并不知道。需要配置这个选项,周期性的去检查代码仓库是否发生改动

8.5、添加maven构建

clean
package

/var/jenkins_home/workspace/hello_world_docker/demo1/pom.xml

在这里插入图片描述

在这里插入图片描述

8.6、增加构建执行shell

在这里插入图片描述

在这里插入图片描述


#!/bin/bash
# 服务名称
server_name=demo1
port=8888

# 项目目录
project_dir=./$server_name

# 拷贝jar到docker目录
cp $project_dir/target/*.jar  $project_dir/docker

# 进入docker目录
cd $project_dir/docker/

# 修改jar权限
chmod 755 *.jar

echo "看看docker版本"
docker -v

# 获取容器名称
temp_server_name=`docker ps -a | grep $server_name | awk '{print $2}'`
 
# 如果容器存在
if test $temp_server_name = $server_name
then
	echo "容器--->>$server_name:停止,删除"
	docker stop $server_name
	docker rm $server_name
	echo "镜像--->>$server_name:删除"
	docker rmi $server_name
fi

 
echo "打包镜像--->>:$server_name"
docker build -t $server_name .
echo "运行镜像--->>:$server_name"
docker run -d -p $port:$port --name $server_name $server_name

 

9、测试

9.1、查看镜像

docker images

在这里插入图片描述

9.2、查看容器

docker ps | grep demo1

在这里插入图片描述

9.3、测试应用

http://192.168.187.171:8888/say/hello

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 安装DockerDocker Compose 在安装DockerDocker Compose之前,需要先安装Docker的依赖包。 首先,更新apt-get: ``` sudo apt-get update ``` 然后安装Docker的依赖包: ``` sudo apt-get install apt-transport-https ca-certificates curl software-properties-common ``` 接下来,添加Docker的GPG密钥: ``` curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - ``` 添加Docker的APT仓库: ``` sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" ``` 更新apt-get: ``` sudo apt-get update ``` 安装Docker: ``` sudo apt-get install docker-ce ``` 安装Docker Compose: ``` sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose ``` 添加执行权限: ``` sudo chmod +x /usr/local/bin/docker-compose ``` 2. 编写Docker Compose文件 在本地创建一个文件夹,用于存放Docker Compose文件和Jenkins的数据: ``` mkdir jenkins cd jenkins mkdir jenkins-data ``` 然后,在该文件夹下创建一个docker-compose.yml文件,用于定义Jenkins容器和相关配置: ``` version: '3' services: jenkins: container_name: jenkins image: jenkins/jenkins:lts ports: - "8080:8080" - "50000:50000" volumes: - "./jenkins-data:/var/jenkins_home" networks: - jenkins_network networks: jenkins_network: ``` 此配置文件会创建一个名为“jenkins”的容器,使用jenkins/jenkins:lts镜像,映射8080和50000端口,并将/var/jenkins_home目录映射到本地的./jenkins-data目录。 3. 启动Jenkins容器 启动Jenkins容器: ``` docker-compose up -d ``` 访问http://localhost:8080,输入初始管理员密码,完成Jenkins的安装。 4. 配置Jenkins 登录Jenkins后台,安装Git插件和Maven插件。 在Jenkins后台,选择“新建任务”,配置任务信息,选择“自由风格项目”。 在“源码管理”中选择“Git”,填写Git仓库地址和用户凭证,保存并应用配置。 在“构建触发器”中选择“轮询SCM”,填写轮询时间间隔。 在“构建”中选择“执行shell命令”,填写构建命令,如: ``` mvn clean package ``` 在“构建后操作”中选择“部署war/ear到容器”,填写部署配置信息,如: ``` Container: Tomcat 8.x Remote Tomcat URL: http://localhost:8080 Credentials: Jenkins WAR/EAR files: **/*.war Context path: / ``` 保存并应用配置。 5. 获取远程代码并构建Jenkins任务列表中,选择要构建的任务,点击“立即构建”按钮,Jenkins会自动获取远程Git仓库中的代码,并执行构建命令。 构建完成后,Jenkins会自动将构建好的war包部署到Tomcat容器中,访问http://localhost:8080即可查看部署的应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值