Jenkins复杂项目构建以及配置详解


我们这里部署一个比较复杂的项目,这个项目涉及到数据库操作和图片上传,首先我们先创建一个dockerfile

# 下载jdk8的最小系统
FROM openjdk:8-alpine
# 指令工作路径
WORKDIR /xiaoyou/dd
# 我们只复制编译好的jar包
COPY ./target/dd-project.jar ./dd-project.jar
# 申明端口,这个其实不起作用,只是提示一下
EXPOSE 9091
# entry option 你希望你的docker镜像只执行一个具体程序, 不希望用户在执行docker run的时候随意覆盖默认程序. 建议用ENTRYPOINT.
# 这个命令和cmd的命令的差不多
ENTRYPOINT ["java","-jar","/xiaoyou/dd/dd-project.jar"]

然后我们修改pom文件

	<build>
		<finalName>dd-project</finalName>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
			</plugin>
<!--			这个插件可以生成docker镜像,这里我们只需要简单的配置一下就可以使用了-->
			<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>dockerfile-maven-plugin</artifactId>
				<version>1.4.9</version>
				<configuration>
					<!--这里指定打包镜像的名称-->
					<repository>${project.build.finalName}</repository>
					<!--这里我们设置版本号来作为tag-->
					<tag>${project.version}</tag>
					<!--构建的参数,这里我们把文件名直接传过去-->
					<buildArgs>
						<JAR_FILE>./target/${project.build.finalName}.jar</JAR_FILE>
					</buildArgs>
				</configuration>
			</plugin>
		</plugins>
	</build>

做完这些后,我们把代码推送到github上去,然后我们配置Jenkins,这里的配置不多说我只简单说一下自动构建脚本内容

echo "停止并且删除容器"
# 这里我们使用ps查询所有包含dd-project的容器并过滤出容器id
CID=$(docker ps -a | grep "dd-project" | awk '{print $1}')
# 判断容器是否存在
if [ -n "$CID" ]; then
  echo "容器存在,容器uid=$CID"
#  停止容器
  docker stop $CID
#  删除容器
  docker rm $CID
fi
# 然后我们需要删除镜像
echo "正在删除镜像..."
# 这里我们获取镜像id
DID=$(docker images | grep "dd-project" | awk '{print $1}')
if [ -n "$DID" ]; then
#   这里我们强制删除这个镜像
  docker rmi -f jenkins-test
fi
# 删除好这些东西后,我们准备构建镜像
echo "开始构建镜像...."
# 我们使用的一个插件来自动构建镜像
mvn dockerfile:build
echo "获取当前镜像id..."
# 我们获取我们构建好的镜像的id
docker images | grep dd-project
echo "启动容器中..."
# 这里我们启动我们构建好的镜像,我们这里映射9091这个端口,同时我们还需要映射对应的文件夹(前面那个是我们本地的文件夹,后面的是我们项目的文件夹)
docker run -itd -p 9091:9091 -v /www/wwwroot/test/image:/xiaoyou/image --name dd-project dd-project
echo "容器启动成功!"

文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录