由于jenkins使用docker部署的,而且要用jenkins来部署springboot项目的话,就需要在jenkins所在的docker容器内部使用docker命令、jdk环境、maven环境,git自带有,因此有两个需要注意的地方
- ①:需要将宿主机的jdk、maven、docker挂载到jenkins的容器内部
- ②:需要用root方式创建容器,因为docker命令只能用root或者docker组的用户
Docker部署jenkins
docker run --name=jenkins --user root -d -p 9080:8080 -v /usr/local/jdk1.8.0_271:/usr/local/java -v /usr/local/apache-maven-3.6.3:/usr/local/maven -v /usr/bin/docker:/usr/bin/docker -v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins
命令中的jdk、maven换成自己的安装目录
查看容器启动日志
上图中 红框中就是jenkins的初始密码
初始化jenkins
这里参考之前的文章Docker部署Jenkins的初次使用配置部分
Jenkins全局配置
创建项目
通用配置
构建配置
构建的shell脚本代码
#!/bin/bash
#maven打包
/usr/local/maven/bin/mvn clean package
echo 'package ok!'
echo 'build start!'
cd ./
service_name="angyum-blog-server"
service_prot=9090
#查看镜像id
IID=$(docker images | grep "$service_name" | awk '{print $3}')
echo "IID $IID"
if [ -n "$IID" ]
then
echo "exist $SERVER_NAME image,IID=$IID"
#删除镜像
docker rmi -f $service_name
echo "delete $SERVER_NAME image"
#构建
docker build -t $service_name .
echo "build $SERVER_NAME image"
else
echo "no exist $SERVER_NAME image,build docker"
#构建
docker build -t $service_name .
echo "build $SERVER_NAME image"
fi
#查看容器id
CID=$(docker ps | grep "$SERVER_NAME" | awk '{print $1}')
echo "CID $CID"
if [ -n "$CID" ]
then
echo "exist $SERVER_NAME container,CID=$CID"
#停止
docker stop $service_name
#删除容器
docker rm $service_name
else
echo "no exist $SERVER_NAME container"
fi
#启动
docker run -d --name $service_name --net=host -p $service_prot:$service_prot $service_name
#查看启动日志
#docker logs -f $service_name
注意代码仓库根目录必须有Dockerfile文件
# 依赖java8环境
FROM openjdk:8-jdk-alpine
# 创建 /app 目录, 作为程序的主目录
RUN mkdir -p /app/logs /app/temp
COPY ./angyum-blog-api/target/angyum-blog-api-1.0.0.jar /app/angyum-blog-api-1.0.0.jar
# 设置启动参数环境变量
ENV JAVA_OPTS="-server -Xmx2000M -Xms2000M -Xloggc:/app/logs/gc.log -XX:+UseG1GC -XX:MaxGCPauseMillis=100 -XX:+ParallelRefProcEnabled \
-XX:ErrorFile=/app/logs/hs_err_pid%p.log \
-XX:HeapDumpPath=/app/logs -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError \
-Djava.io.tmpdir=/app/temp \
-XX:+PrintHeapAtGC \
-XX:MaxMetaspaceSize=256M -XX:MetaspaceSize=128M -Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8 -Duser.timezone=GMT+8" \
SERVER_PORT=9090
# 配置暴露端口
EXPOSE ${SERVER_PORT}
# Docker 自身健康检查
HEALTHCHECK --interval=10s --timeout=3s \
CMD curl -v --fail http://localhost:${SERVER_PORT} || exit 1
# 切换服务目录
WORKDIR /app
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar angyum-blog-api-1.0.0.jar" ]
最后保存
构建项目
看到如下输出日志说明成功了
访问项目
参考: https://blog.csdn.net/shayopron/article/details/121167066
评论区