Jenkins 整合 Docker 自动化部署

Docker 安装 Jenkins 配置自动化部署

1. Docker 安装 Jenkins

1.1 拉取镜像文件
shell 复制代码
docker pull jenkins/jenkins
1.2 创建挂载文件目录
shell 复制代码
mkdir -p $HOME/jenkins_home
1.3 启动容器
shell 复制代码
docker run -d -p 8080:8080 -v $HOME/jenkins_home:/var/jenkins_home --name jenkins jenkins/jenkins
1.4 进入容器查看初始密码
shell 复制代码
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文件插件
xml 复制代码
<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文件中配置的一致

shell 复制代码
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
相关推荐
海岛日记1 小时前
centos一键卸载docker脚本
linux·docker·centos
小袁搬码3 小时前
Windows中指定路径安装DockerDesktop
windows·docker·容器·docker desktop
吃肉不能购3 小时前
Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪
运维·yolo·自动化
qq_312920113 小时前
docker 部署 kvm 图形化管理工具 WebVirtMgr
运维·docker·容器
踏雪Vernon3 小时前
[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式
linux·docker·容器·harmonyos
条纹布鲁斯4 小时前
dockerdsktop修改安装路径/k8s部署wordpress和ubuntu
docker·kubernetes
工业3D_大熊6 小时前
3D可视化引擎HOOPS Luminate场景图详解:形状的创建、销毁与管理
java·c++·3d·docker·c#·制造·数据可视化
szc17676 小时前
docker 相关命令
java·docker·jenkins
CP-DD6 小时前
Docker 容器化开发 应用
运维·docker·容器
Stark-C7 小时前
万物皆可Docker,在NAS上一键部署最新苹果MacOS 15系统
macos·docker·策略模式