Jenkins整合Docker自动化部署的实现
作者:Pole丶逐
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+maven代码构建部署平台
- docker+gitlab+jenkins从零搭建自动化部署
- 基于Docker、Nginx和Jenkins实现前端自动化部署
- docker部署安装jenkins的实现步骤
- Docker搭建Jenkins并自动化打包部署项目的步骤
- 基于Docker与Jenkins实现自动化部署的原理解析
- 使用Jenkins+docker打包部署后端服务的实现
- 基于Jenkins自动打包并部署docker环境的操作过程
- docker+jenkins+gitee配置持续集成部署方式
- Windows Docker部署Jenkins的实现步骤
- Jenkins+Docker实现自动化部署