当前位置: 首页 > 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.3
 PATH+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.0
 
echo "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进程
在这里插入图片描述

相关文章:

  • 详解 Redis repl_backlog_buffer(如何判断增量同步)
  • 2025年智能 ITSM产品推荐
  • Elasticsearch | ES索引模板、索引和索引别名的创建与管理
  • “图生生”AI生图优化升级,DeepSeek加持体验更优!
  • SAN及其ZONE
  • 【kind管理脚本-2】脚本使用说明文档 —— 便捷使用 kind 创建、删除、管理集群脚本
  • JavaScript学习教程,从入门到精通,JavaScript 数据类型详解(7)
  • 《AI开发工具和技能实战》专栏规划:从工具到应用的全链路指南
  • IntelliJ IDEA使用技巧(json字符串格式化)
  • vue3+vue-router4的安装使用以及路由守卫
  • Android audio(2)-audioservice
  • 蓝桥杯-卡片
  • android wifi 连接流程(framework)
  • k8s之Service类型详解
  • 01-Redis-基础
  • JavaScript 用法详解
  • C++使用WebView2控件,通过IPC通信与Javascript交互
  • 蓝桥杯-门牌制作
  • JVM生产环境调优实战
  • 如何将 对个 把b3dm 合并成一个模型
  • b2b电子商务网站系统/网络推广怎么赚钱
  • 学seo可以做网站吗/郑州做网站推广电话
  • 深圳软件开发公司在哪里/淮南网站seo
  • 怎么知道网站是php/想要推广页
  • 网站前缀带wap的怎么做/游戏推广是什么工作
  • 上海建设网站是国家级吗/合肥百度关键词推广