Jenkins整合Docker自动化部署的实现

 更新时间:2023年11月28日 15:54:27   作者:Pole丶逐  
本文主要介绍了Jenkins整合Docker自动化部署的实现,通过结合Jenkins的持续集成和Docker的容器化技术,可以高效地构建、测试和部署应用程序,感兴趣的可以了解一下

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

到此这篇关于Jenkins整合Docker自动化部署的实现的文章就介绍到这了,更多相关Jenkins Docker自动化部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker安装Jenkins-2.249.3-1.1的详细过程

    Docker安装Jenkins-2.249.3-1.1的详细过程

    这篇文章主要介绍了Docker安装Jenkins-2.249.3-1.1,通过编写docke安装脚本来实现安装目的,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • docker部署mysql 实现远程连接的示例代码

    docker部署mysql 实现远程连接的示例代码

    这篇文章主要介绍了docker部署mysql 实现远程连接的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 详解利用ELK搭建Docker容器化应用日志中心

    详解利用ELK搭建Docker容器化应用日志中心

    这篇文章主要介绍了详解利用ELK搭建Docker容器化应用日志中心,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • 详解docker部署Jenkins新手使用教程

    详解docker部署Jenkins新手使用教程

    这篇文章主要介绍了详解docker部署Jenkins新手使用教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 手把手教你实现Docker 部署 vue 项目

    手把手教你实现Docker 部署 vue 项目

    这篇文章主要介绍了手把手教你实现Docker 部署 vue 项目,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 如何使用docker compose 部署ELK 8.X及监控

    如何使用docker compose 部署ELK 8.X及监控

    这篇文章主要介绍了如何使用docker compose 部署ELK 8.X及监控,包括前置环境配置及docker compose启动/停止的命令,感兴趣的朋友跟随小编一起看看吧
    2023-10-10
  • docker安装、调试qsign签名服务器的解决方案

    docker安装、调试qsign签名服务器的解决方案

    这篇文章主要介绍了docker安装、调试qsign签名服务器的解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-04-04
  • 从零搭建docker私有仓库的步骤

    从零搭建docker私有仓库的步骤

    这篇文章主要介绍了从零搭建docker私有仓库的步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Docker的MySQL容器时区问题修改

    Docker的MySQL容器时区问题修改

    这篇文章主要给大家介绍了关于Docker的MySQL容器时区问题修改的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • docker 安装 php-fpm 服务 / 扩展 / 配置的示例教程详解

    docker 安装 php-fpm 服务 / 扩展 / 配置的示例教程详解

    这篇文章主要介绍了docker 安装 php-fpm 服务 / 扩展 / 配置,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-05-05

最新评论