当前位置: 首页 > news >正文

Docker+Jenkins+Gitee自动化项目部署

前置条件

docker安装成功
按照下面配置加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://register.librax.org"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

一、拉取Jenkins镜像

docker pull jenkins/jenkins:lts
docker images #查看镜像

二、宿主机安装好maven

  • 命令下载
    wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
  • 官网下载后传到Linux服务器
  • 然后使用命令进行解压
tar -zxvf apache-maven-3.6.3-bin.tar.gz

解压需要解压到这个目录下面 /opt/develop_resource/apache-maven-3.6.3,因为后面再启动jenkins的时候需要挂载在他容器的目录里面

  • 宿主机上的 /opt/develop_resource/apache-maven-3.6.3 目录将会被挂载到 Docker 容器内的/opt/maven/apache-maven-3.6.3 目录上。
  • 如果/opt/maven/apache-maven-3.6.3 在容器内部不存在,Docker 会自动创建这个目录
  • 在容器运行期间,对 /opt/maven/apache-maven-3.6.3 内部所做的任何更改都会反映到宿主机的 /opt/develop_resource/apache-maven-3.6.3 目录中,反之亦然
  • 配置maven镜像加速
    在/opt/develop_resource/apache-maven-3.6.3/conf找到setting文件
    新增配置:
<mirrors><mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/repositories/central/</url></mirror></mirrors>

在这里插入图片描述

三、运行启动Jenkins

先在宿主机创建Jenkins的挂载目录

mkdir -p /home/jenkins/workspace

运行启动jenkins命令如下:

docker run -uroot -d --restart=always --privileged=true \-p 10240:8080 -p10241:50000 \-v /home/jenkins/workspace/:/var/jenkins_home/workspace \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr/bin/docker \-v /opt/develop_resource/apache-maven-3.6.3:/opt/maven/apache-maven-3.6.3 \-e MAVEN_HOME=/opt/maven/apache-maven-3.6.3 \-e PATH="/opt/maven/apache-maven-3.6.3/bin:/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \--name jenkins jenkins/jenkins:lts

通过docker ps指令可以查看容器是否启动
在这里插入图片描述
Jenkins启动完整后进入容器查看maven是否配置正确

docker exec -it jenkins bash
mvn -v

在这里插入图片描述
四、浏览器访问Jenkins,ip+10240
注意:首次进入需要获取管理员密码,可以进入Jenkins容器查看

docker exec -it jenkins bash
cat /var/jenkins_home/secrets
这个目录下存了管理员密码

进入后可以新建一个账号,插件可选择性安装,这里略

五、Jenkins后台配置

  1. 配置maven
    在这里插入图片描述

    新增环境变量并保存
    注意这里的路径是根据启动容器来配置的
 M2_HOME  /opt/maven/apache-maven-3.6.3PATH+EXTRA  $M2_HOME/bin
  1. 安装必要的插件
    在这里插入图片描述
    在这里插入图片描述
    搜索框依次搜索并安装
  • gitee使用:Gitee
  • maven 插件:Maven Integration plugin
  • SSH远程连接插件:Publish Over SSH
  1. 配置环境
    在这里插入图片描述
    系统配置里找到gitee
    在这里插入图片描述
    在这里插入图片描述
    令牌获取地址

在这里插入图片描述
4. 配置ssh(还是在上面菜单,往下滑找到这个配置位置)
在这里插入图片描述
在这同时修改服务器密码
在这里插入图片描述
5. tool模块配置maven
在这里插入图片描述
在这里插入图片描述
这里配置的地址与前面配置的保持一致即可
6. 构建任务,新建自动化部署任务
在这里插入图片描述
在这里插入图片描述
选择第一个点击确定并进入任务配置
在这里插入图片描述
在这里插入图片描述

填写gitee仓位地址以及gitee认证信息

在这里插入图片描述
一直滑到最下面然后点击生成按钮 输入框中就会出现密码,将这个密码复制到gitee仓库
在这里插入图片描述
进入gitee代码仓库,将密码填入,
url:
在这里插入图片描述
配置轮询
在这里插入图片描述
7.下一步在添加构建步骤这里选择执行shell

#!/bin/bash
# 退出脚本如果任何一个命令失败
set -e# 删除旧的Docker容器
echo "Removing old container..."
docker rm -f app_docker || true # 忽略错误,以防容器不存在
# 删除旧的Docker镜像
echo "Removing old image..."
docker rmi -f app_docker:1.0 || true # 忽略错误,以防镜像不存在# 构建Java应用程序
# echo "Building Java application..."
mvn clean install -Dmaven.test.skip=true# 构建新的Docker镜像
echo "Building new Docker image..."
docker build -t app_docker:1.0 -f ./src/main/docker/Dockerfile .# 运行新的Docker容器
echo "Running new Docker container..."
docker run -d -p 8080:8080 --name app_docker app_docker:1.0echo "Application is now running."

这里在贴上项目的dockerfile

# 指定是基于哪个基础镜像
#FROM java:8
#FROM registry.cn-hangzhou.aliyuncs.com/library/java:8-jdk
FROM eclipse-temurin:8-jdk# 作者信息
MAINTAINER demo# 挂载点声明
VOLUME /tmp# 将本地的一个文件或目录,拷贝到容器的文件或目录里
ADD /target/demoProject-2.6.13.jar springboot.jar#shell脚本
RUN bash -c 'touch /springboot.jar'# 将容器的8080端口暴露,给外部访问。
EXPOSE 8080# 当容器运行起来时执行使用运行jar的指令
ENTRYPOINT ["java", "-jar", "springboot.jar"]#ENTRYPOINT ["java", "-jar", "/springboot.jar", "--spring.profiles.active=prod"]

改完之后通过git命令上传到gitee上面后,jenkins会自动的进行构建
在这里插入图片描述
最后成功了!!!
需要注意的是我暴露的端口是8080
这里shell命令中挂载的端口和dockerfile中暴露端口要一致才能进行

启动成功后查看docker进程
在这里插入图片描述


http://www.mrgr.cn/news/97702.html

相关文章:

  • 【Linux】系统进程管理
  • oracle 11g密码长度和复杂度查看与设置
  • 处理Excel的python库openpyxl、xlrd、xlwt、pandas有什么区别,搞懂它
  • python三大库之---pandas(二)
  • this指针 和 类的继承
  • Qt项目——记事本
  • HarmonyOS应用开发者高级-编程题-001
  • 构建一个最简单的UDP服务器和客户端并逐行解析
  • 新一代达梦官方管理工具SQLark:可视化建表操作指南
  • 【QT】QT编译链接 msql 数据库
  • 用PointNet++训练自己的数据集(语义分割模型semseg)
  • vscode调试vite项目断点(debugger)
  • linux开发环境
  • 如何高效生成达梦数据库测试数据?官方管理工具来了!
  • 实习技能记录【3】-----Git操作
  • 蓝桥杯——走迷宫(BFS)
  • Houdini20.5apex绑定模块入门学习笔记
  • verilog有符号数的乘法
  • 谈Linux之磁盘管理——万字详解
  • Heap_dijkstra模板