本文档介绍了使用Docker部署Jenkins服务、项目构建流程步骤、项目的Dockerfile以及服务器构建脚本。下面是各部分的简要概述:
一. 安装部署Jenkins
通过Docker部署Jenkins服务的命令如下:
docker run \
-u root \
-d \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkinsci/blueocean
二. 项目构建流程步骤
创建一个项目构建部署任务,例如使用“构建一个Maven项目”,然后按顺序编排代码拉取、源码编译、制作镜像、容器替换等操作。
三. 项目的Dockerfile
在项目根目录添加Dockerfile文件,用于构建镜像。Dockerfile的内容包括依赖基础Java环境镜像、设置变量、指定容器时区、复制本地JAR文件到镜像中、设置启动命令等。
# 依赖基础java环境镜像
FROM openjdk:8-jre
# 维护者
MAINTAINER zhucan
# 设置变量 (其他配置都是通用的, 每个项目仅需改动此地)
ENV ProjectName operational-analysis
# 镜像中的服务源码地址
ENV WorkDir /opt/run/web
ENV JarFile $ProjectName-0.0.1-SNAPSHOT.jar
# 指定容器时区
ENV TZ=Asia/Shanghai
# 设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo '$TZ' > /etc/timezone
# 数据卷 VOLUME /tmp
# 复制本地jar文件到镜像中
RUN mkdir -p $WorkDir COPY /target/$JarFile $WorkDir
# ENTRYPOINT ["java", "-jar", "$WorkDir/$JarFile"]
# 服务启动环境配置(使用jenkins注入环境变量)
# ENV Profile prod
# 启动命令 #ENTRYPOINT java -Dspring.profiles.active=$Profile -jar $WorkDir/$JarFile
ENTRYPOINT java -jar $WorkDir/$JarFile
# 暴露服务端口
EXPOSE 8080
四. 服务器构建脚本
通过Jenkins的SSH插件远程到要部署的目标服务器执行部署脚本。部署脚本包括清除历史容器、清除本地镜像、重新拉取镜像并运行等操作。
#!/bin/bash
# 容器名称
CONTAINER_NAME=operational_analysis_prod_zhucan
# 镜像
IMAGE_NAME=hub.mingyuanyun.com/ykj-bjky/operational_analysis DOCKER_IMAGE=${IMAGE_NAME}:prod.${BUILD_NUMBER}
echo "$DOCKER_IMAGE"
# 清除历史容器
historicalContainerId=`docker ps -a | grep -w ${CONTAINER_NAME} | awk '{print $1}'`
if [[ "$historicalContainerId" != "" ]] ; then
# 关停容器
docker stop $historicalContainerId
# 删除容器
docker rm $historicalContainerId
echo "删除历史容器: $historicalContainerId"
fi
# 清除本地镜像
localImageId=`docker images | grep -w ${IMAGE_NAME} | awk '{print $3}'`
if [[ "$localImageId" != "" ]] ;then
# 删除镜像
docker rmi -f $localImageId
echo "删除镜像: $localImageId"
fi
# 重新拉取镜像并运行
docker run -d -p8089:8080 -p8999:8996 -e "SPRING_PROFILES_ACTIVE=prod" --name=${CONTAINER_NAME} ${DOCKER_IMAGE}
echo "容器启动完成-.-"