为什么要用Jenkins
每次开发完成一个项目之后,需要打包部署,没用专门的运维人员,只能由开发人员打包程序,把线上的服务关了,把打包好的应用程序部署进服务器,这是一个繁琐的过程,而Jenkins正好帮助我们解决了这个问题,自动构建部署,非常方便。
Jenkins
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Jenkins工作原理
以上为基本工作原理,只是为了开发人员更好的理解画的,详情可查看官方文档:https://www.jenkins.io/zh/
安装Jenkins
首先准备一台服务器/虚拟机,安装好Docker,还有远程连接工具等辅助软件。
从Docker中拉取Jenkins镜像
docker pull jenkinsci/blueocean
启动Jenkins服务
docker run \ -u root \ -d \ -p 10240:8080 \ -p 10241:50000 \ -v jenkins-data:/var/jenkins_home \ -v /var/run/docker.sock:/var/run/docker.sock \ jenkinsci/blueocean
- -u:使用root用户
- -rm:关闭时自动删除Docker容器。如果您需要退出Jenkins,这可以保持整洁。
- -d:在后台运行容器(即“分离”模式)并输出容器ID。如果您不指定此选项, 则在终端窗口中会输出正在运行的此容器的Docker日志。
- -p: 映射端口
- -v:目录挂载
浏览器输入
http://192.168.140.128:10240/
看到如下界面表示成功
等待一段时间,可以看到如下界面
#进入容器 docker exec -it xxxxxxxxxxx /bin/bash #查看密钥 cat /var/jenkins_home/secrets/initialAdminPassword xxxxxxxxxxxxxxxxxxxxxxxxxx
复制上面的xxxxxxxxxxxxxxxxxxxxxxxxxx密钥拿到浏览器的编辑框黏贴,点击继续等待一段时间。
安装插件
选择
安装推荐的插件
即可然后根据步骤配置
管理员账号
和JenkinsURL
保存并完成,然后就可以使用了注意:首次进入Jenkins部分菜单会还没有中文,需要重新启动。
实现Jenkins+Docker部署项目
Jenkins安装maven打包插件:Jenkins -> 系统管理 -> 插件管理 -> 可选插件,搜索
Maven Integration
和Docker
等待安装即可
进行全局工具配置;Jenkins -> 系统管理 -> 全局工具配置
进行JDK配置,在此之前你需要查看
JAVA_HOM
路径,使用docker inspect xxxxxxx
即可,大致如下,有JAVA_HOM
即可。"Env": [ "PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "LANG=en_US.UTF-8", "LANGUAGE=en_US:en", "LC_ALL=en_US.UTF-8", "JAVA_VERSION=jdk8u262-b10", "JAVA_HOME=/opt/java/openjdk", "JENKINS_HOME=/var/jenkins_home", "JENKINS_SLAVE_AGENT_PORT=50000", "REF=/usr/share/jenkins/ref", "JENKINS_VERSION=2.249.2", "JENKINS_UC=https://updates.jenkins.io", "JENKINS_UC_EXPERIMENTAL=https://updates.jenkins.io/experimental", "JENKINS_INCREMENTALS_REPO_MIRROR=https://repo.jenkins-ci.org/incrementals", "COPY_REFERENCE_FILE_LOG=/var/jenkins_home/copy_reference_file.log" ],
进行git配置
maven配置
docker配置
最后点击保存即可。
开始新建任务
点击新建任务
任务填写
进行任务配置
添加git仓库
构建触发器
build编译
编译build的shell命令
#将打包好的jar项目,移到/opt/data/build目录 #/var/jenkins_home/workspace/SpringBoot_AutoTest/target/jenkins-0.0.1-SNAPSHOT.jar构建好的jar路径 #/opt/data/build进入到容器创建这个目录 mv /var/jenkins_home/workspace/SpringBoot-AutoTest/target/springboot-AutoTest-0.0.1-SNAPSHOT.jar /opt/data/build #切换目录到/opt/data/build cd /opt/data/build #执行构建Dockerfile命令 docker build ./ -t my/demo #停止之前的容器运行 docker stop demo #删除之前的容器 docker rm demo #运行刚刚创建的容器 docker run -d --name demo -p 8080:8080 my/demo echo "构建完成"
点击保存应用。
编写一份Dockerfile文件,内容如下
# 基于java镜像创建新镜像 FROM docker.io/java:8 # 作者 MAINTAINER xxxx # 将jar包添加到容器中并更名为springboot-AutoTest-0.0.1-SNAPSHOT.jar COPY springboot-AutoTest-0.0.1-SNAPSHOT.jar /springboot-AutoTest-0.0.1-SNAPSHOT.jar # 暴露8080端口 EXPOSE 8080 # 运行jar包 ENTRYPOINT ["java","-jar","springboot-AutoTest-0.0.1-SNAPSHOT.jar","--server.port=8080","&"]
编写好之后,运行如下命令,将其放置到Docker容器中
docker cp Dockerfile 容器ID:/opt/data/build
点击立刻构建
参考
文章1:https://www.cnblogs.com/fuzongle/p/12834080.html
文章2:https://blog.csdn.net/linfen1520/article/details/109045808
文章3:https://blog.csdn.net/linfen1520/article/details/109045063