Docker+Jenkins+Springboot自动编译发布

本文介绍了如何在CentOS系统上安装Docker和Portainer,以及使用Docker安装Jenkins和Portainer来实现自动化部署。通过Docker运行Jenkins容器,并配置相关插件,实现项目的编译、镜像构建及发布到私有仓库。同时,文章还提供了Dockerfile示例,展示了如何为Spring Boot应用创建Docker镜像。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、安装Docker

#安装需要的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#安装最新版本
yum install docker-ce docker-ce-cli containerd.io
#启动并加入开机启动
sudo systemctl start docker
#查看安装是否成功
docker version

#安装portainer
docker pull portainer/portainer

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock  --name portainer --restart=always portainer/portainer

 输入ip:9000进入登录界面

二、安装Jenkins

docker pull jenkinsci/blueocean

docker run -u root -d -e TimeZone=Asia/Shanghai  -v /home/jenkins-data:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock --name=jenkins --restart=always --network host  jenkinsci/blueocean

 访问ip加8080

 

因为修改了默认地址、按运行容器时修改的地址找

 

 

重启容器,进入系统管理

插件管理

 

 安装以下插件(或者在安装时选择自定义安装时选择)

Extended Choice Parameter

 

 

 

系统配置

 

编译项目

创建镜像文件并发布到私库

运行到docker容器内

 # 查询是否存在容器
if [ "$(docker ps -aq -f name=${NAME})" ]; then
    echo "存在容器"
    # 查询容器是否运行
    if [ "$(docker ps -aq -f status=running -f name=${NAME})" ]; then
        # cleanup
         docker stop ${NAME} && docker rm -f ${NAME} &&
        echo "旧容器已删除!!!!!!!!"
       docker rmi $(docker images | grep "${NAME}*" | awk '{print $3}') &&
       echo "旧镜像已删除!!!!!!!!"
    fi
      # run your container
      docker rm -f ${NAME} &&
     echo "旧容器已删除!!!!!!!!"
     docker rmi $(docker images | grep "${NAME}*" | awk '{print $3}') &&
     echo "旧镜像已删除!!!!!!!!"
fi
echo "开始发布!!!!!!!!"
docker login -u admin -p 密码 私库地址 &&
docker pull 私库地址/${NAME}:${TAG}  &&
docker run -d -e SPRING_PROFILES_ACTIVE="test" -e NACOS_NAMESPACE="548a9a53-d095-4259-a0ca-6514dcbd0e56" --name=${NAME} --restart=always --network host 私库地址/${NAME}:${TAG} &&
echo "重新发布成功!!!!!!!!"

 查询最新镜像并运行

 $NAME为镜像名称

array=(${server//,/ }) 
for NAME in ${array[@]}
do
  echo $NAME 
 # 查询是否存在容器
if [ "$(docker ps -aq -f name=$NAME)" ]; then
    echo "存在容器"
    # 查询容器是否运行
    if [ "$(docker ps -aq -f status=running -f name=$NAME)" ]; then
        # cleanup
         docker stop $NAME && docker rm -f $NAME &&
        echo "旧容器已删除!!!!!!!!"
       docker rmi $(docker images | grep "$NAME*" | awk '{print $3}') &&
       echo "旧镜像已删除!!!!!!!!"
    fi
      # run your container
      docker rm -f $NAME &&
     echo "旧容器已删除!!!!!!!!"
     docker rmi $(docker images | grep "$NAME*" | awk '{print $3}') &&
     echo "旧镜像已删除!!!!!!!!"
fi
echo "开始发布!!!!!!!!"
docker login -u admin -p xx xx &&
docker pull $(docker search --limit 1000 xx/$NAME |awk '{print $1}' |tail -n 1)  &&
docker run  -d -e SPRING_PROFILES_ACTIVE="test"  -e NACOS_NAMESPACE="548a9a53-d095-4259-a0ca-6514dcbd0e56" --name=${NAME} --restart=always --network host $(docker search  --limit 1000 xx/$NAME |awk '{print $1}' |tail -n 1) &&
echo "重新发布成功!!!!!!!!"
done

Dockerfile文件

# Docker image for springboot file run
# VERSION 0.0.1
# Author: eangulee
# 基础镜像使用java 定制的镜像都是基于 FROM 的镜像,这里的 java 就是定制需要的基础镜像。后续的操作都是基于 java。
FROM java:8
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将压缩包解压到/usr/local/src
ADD hierway-warning-service-dist.tar.gz /usr/local/src
# 更新hierway-auth的存取和修改时间
RUN bash -c 'touch /usr/local/src/hierway-warning-service/hierway-warning-service.jar && touch /usr/local/src/hierway-warning-service/agent/skywalking-agent.jar'
# 更新hierway-auth的存取和修改时间
#-Djava.security.egd=file:/dev/./urandom 加快随机数产生 缩短 Tomcat 启动时间
ENTRYPOINT ["java" ,"-javaagent:/usr/local/src/hierway-warning-service/agent/skywalking-agent.jar","-Dskywalking.agent.service_name=hierway-warning-service-test","-Dskywalking.collector.backend_service=127.0.0.1:11800","-Dfile.encoding=utf-8","-Djava.security.egd=file:/dev/./urandom","-Dspring.cloud.nacos.config.server-addr=${SERVER-ADDR}","-Dspring.cloud.nacos.config.namespace=${NACOS_NAMESPACE}","-Dspring.profiles.active=${SPRING_PROFILES_ACTIVE}","-jar","/usr/local/src/hierway-warning-service/hierway-warning-service.jar" ]
# 添加时区环境变量,亚洲,上海
ENV TimeZone=Asia/Shanghai
# 使用软连接,并且将时区配置覆盖/etc/timezone
RUN ln -snf /usr/share/zoneinfo/$TimeZone /etc/localtime && echo $TimeZone > /etc/timezone

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值