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

Jenkins 整合 Docker 自动化部署

Docker 安装 Jenkins 配置自动化部署

1. Docker 安装 Jenkins

1.1 拉取镜像文件
docker pull jenkins/jenkins
1.2 创建挂载文件目录
mkdir -p $HOME/jenkins_home
1.3 启动容器
docker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins
1.4 进入容器查看初始密码
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
1.5 登录控制台完成初始化

选择安装推荐的插件

在这里插入图片描述

2. 配置自动化部署

2.1 配置项目文件

2.1.1 创建DockerFile文件

文件位置与Java文件目录位置平级:

${WORKSPACE}/src/main/java

${WORKSPACE}/src/main/docker/DockerFile
在这里插入图片描述

# 该镜像需要依赖的基础镜像
FROM openjdk:8
ARG JAR_FILE
# 复制打包完成后的jar文件到/opt目录下
COPY ${JAR_FILE} /project-name.jar
# 运行过程中创建一个project-name.jar文件
RUN bash -c 'touch /project-name.jar'
# 声明服务运行在端口
EXPOSE 8801
ENV JAVA_OPTS="-Xms512m -Xmx2048m"
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /project-name.jar" ]
# 指定维护者的名字
MAINTAINER name
2.1.2 添加pom文件插件
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <executions>
                <execution>
                    <id>build-image</id>
                    <phase>package</phase>
                    <goals>
                        <goal>build</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!--生产的镜像名称和版本-->
                <imageName>project-category/${project.artifactId}:${project.version}</imageName>
                <dockerHost>http://${dockerHost}:2375</dockerHost>
                <forceTags>true</forceTags>
                <!--dockerfile的位置-->
                <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                <!--jar名称配置,用在dockerfile中,需要自己写的可不用此配置-->
                <buildArgs>
                    <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
                <!--jar源位置-->
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
            <dependencies>
                <dependency>
                    <groupId>javax.activation</groupId>
                    <artifactId>activation</artifactId>
                    <version>1.1.1</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
    <!--build节点增加内容-->
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <!--开启过滤,用指定的参数替换directory下的文件中的参数-->
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

2.2 配置Jenkins

2.2.1 创建项目部署脚本

在这里插入图片描述

2.2.2 选择构建自由风格项目

在这里插入图片描述

2.2.3 General - 丢弃旧的构建历史,节省磁盘空间

在这里插入图片描述

2.2.4 源码管理 - 配置Git代码地址

1,配置Git地址(SSH)

2,配置账号密码

3,配置代码分支

在这里插入图片描述

2.2.5 源码管理 - 高级克隆行为

在这里插入图片描述

在这里插入图片描述

2.2.6 Build Steps - 调用顶层 Maven 目标

在这里插入图片描述

2.2.6.1 编译依赖项目

如果当前项目依赖了本地其他项目,则需要先打包依赖项目,没有则跳过此步骤

目标:clean install -pl rely-project-name -am

POM:${WORKSPACE}/rely-project-name/pom.xml

注:依赖项目的pom文件位置

在这里插入图片描述

2.2.6.2 打包部署项目

前提:此步骤需要目标服务器上的Docker进行过新增用户组操作和开发2375端口操作

目标: clean package -Pdev -DdockerHost=ip docker:build

注:-P 代表走不同的配置环境(非必须)

POM:${WORKSPACE}/project-name/pom.xml

注:打包项目的pom文件位置

在这里插入图片描述

2.2.7 Build Steps - Execute shell script on remote host using ssh

在目标部署服务器上将代码打包成镜像,并启动为容器

1,配置SSH账号密码

2,Docker启动容器命令

-p 端口设置需要与DockerFile文件设置一致

-d 镜像名称需要与本地项目pom文件中配置的一致

在这里插入图片描述

docker stop  project-center
echo '----stop container----'
docker rm  project-center
echo 'rm cont'
docker rmi `docker images | grep none | awk '{print $3}'`
echo '----rm none images----'
docker run  -it  --network=host    -p 8801:8801 --name  project-center -d project-category/project-name:1.0-SNAPSHOT 
echo '----start container----'
docker cp -L /usr/share/zoneinfo/Asia/Shanghai  project-center:/etc/localtime
docker cp -L /usr/share/zoneinfo/Asia/Shanghai  project-center:/etc/timezone
docker restart project-center

http://www.kler.cn/a/147646.html

相关文章:

  • Python Web 应用开发基础知识
  • docker与大模型(口语化原理和实操讲解)
  • 【Qt实现虚拟键盘】
  • 第9章 DIV+CSS布局
  • redis7.x源码分析:(2) adlist双向链表
  • Dubbo 3.2 源码导读
  • 【Java学习笔记】72 - 满汉楼 - 餐饮管理系统
  • Vatee万腾的数字化创新航程:Vatee科技力量的前瞻之光
  • Python爬虫之代理IP与访问控制
  • 万字解析设计模式之模板方法与解释器模式
  • MySQL基础篇一
  • 【蓝桥杯备考】第十二届蓝桥杯省赛Java B组真题 编程题
  • java线程三种方式
  • qt国际化多语言
  • GIS入门,开源 JavaScript二维地图引擎OpenLayers介绍
  • python计算概率分布
  • 【随笔记录】VMware搭建python开发环境
  • Spark_spark参数配置优先级
  • LeetCode [简单] 70.爬楼梯
  • leetcode刷题详解八
  • I2C 通信-stm32入门
  • 分享一个鬼~
  • 【前端首屏加载速度优化(0): 谷歌浏览器时间参数】
  • Missing file libarclite_iphoneos.a 问题解决方案
  • 【JavaEE初阶】 HTTP协议和使用Fiddler抓包
  • C语言--每日选择题--Day26