从零开始的Docker + jenkins自动化部署

一、简介:

本文主要记录如何从零开始,安装docker后,通过docker安装jenkins,后续如何使用jenkins自动化部署项目,最终效果是一键部署最新jar包到服务器

二、前置软件安装

(1)安装docker

复制代码
以Centos7安装20.10.5-3.el7版本docker举例

配置yum源库

bash 复制代码
wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum安装docker

bash 复制代码
yum install docker-ce-20.10.5-3.el7 -y

启动docker

bash 复制代码
systemctl start docker

建议修改一下docker容器日志大小 配置/etc/docker/daemon.json增加以下两项

bash 复制代码
# vim /etc/docker/daemon.json

{
  "log-driver":"json-file",
  "log-opts": {"max-size":"500m", "max-file":"3"}
}

配置修改后重启docker

bash 复制代码
systemctl daemon-reload
systemctl restart docker

(2)docker安装jenkins

mkdir -p /data/mnt/jenkins_mount chmod 777 /data/mnt/jenkins_mount

bash 复制代码
docker pull jenkins/jenkins     
docker run -d -p 9080:8080 -p 10240:50000 -v /data/mnt/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name jenkins jenkins/jenkins

访问地址 物理机ip:9080

bash 复制代码
http://192.168.57.102:9080/

查看管理员密码

bash 复制代码
docker logs jenkins

先安装推荐插件 使用admin账户继续可以,创建账户也行 admin账户记得修改下密码 安装maven插件来新建maven任务 安装publish over ssh来上传文件到服务器和在服务器执行命令

三、构建镜像

安装等待期间 让我们来准备这两个文件 Dockerfile

bash 复制代码
FROM java:8u111
# set environment
ENV SERVER_PORT="9001" \
    JAVA="java" \
    JVM_XMS="1g" \
    JVM_XMX="1g" \
    JVM_XMN="512M" \
    TIME_ZONE="Asia/Shanghai" \
    BASE_DIR="/var/app_home"

RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo 'Asia/Shanghai' >/etc/timezone

WORKDIR /$BASE_DIR
ADD startup.sh startup.sh

# set startup log dir
RUN mkdir -p logs \
	&& cd logs \
	&& touch start.out \
	&& ln -sf /dev/stdout start.out \
	&& ln -sf /dev/stderr start.out

RUN chmod +x startup.sh

ENTRYPOINT ["/var/app_home/startup.sh"]

startup.sh启动脚本

bash 复制代码
#!/bin/bash
#===========================================================================================
# JVM Configuration
#===========================================================================================
# set server port
JAVA_OPT="${JAVA_OPT} -Dserver.port=${SERVER_PORT} "
JAVA_OPT="${JAVA_OPT} -Xms${JVM_XMS} -Xmx${JVM_XMX} -Xmn${JVM_XMN} "
JAVA_OPT="${JAVA_OPT} -jar ${BASE_DIR}/build/app.jar "

echo "nacos is starting,you can check the ${BASE_DIR}/logs/start.out"
echo "$JAVA ${JAVA_OPT}" >${BASE_DIR}/logs/start.out 2>&1 &
$JAVA ${JAVA_OPT}

放同一目录下 在目录下执行

bash 复制代码
docker build -t  test-java .#test-java镜像名称

镜像就构建好了

四、jenkins创建任务

先配置服务器登录信息

安装maven用来打包

选择刚刚添加的凭据 这里指定分支

这里增加构建后操作 保存,立即构建 结束后到服务器查看

bash 复制代码
cd /data/mnt/javaWork/test-java
mv test-java-1.0-SNAPSHOT.jar app.jar

构建容器

bash 复制代码
docker run -itd --privileged=true -p 9001:9001 -e SERVER_PORT=9001 -v /data/mnt/javaWork/test-java:/var/app_home/build --restart=always --name test-java test-java

写重启容器脚本

bash 复制代码
cd /data/mnt/javaWork
touch restart.sh
vim restart.sh

脚本:

bash 复制代码
cd /data/mnt/javaWork/$projectName
file=$projectName-1.0-SNAPSHOT.jar
if [ ! -f "$file" ]; then
 echo "文件不存在"
 exit
fi
mv -f $projectName-1.0-SNAPSHOT.jar app.jar
docker restart $projectName
echo "SUCCESS"

$projectName为变量名称,统一用的test-java 回到jenkins,配置刚刚写的脚本 到此jenkins自动发布java项目配置完成,流程为jenkins自动拉取最新代码,利用maven工具打包,将打包后的jar上传到服务器,然后执行我们写在服务上的重启容器脚本,完成对服务器jar包的更新, 其实说白了是对工具的利用,解放双手,把自动化工具用起来,第一次写这种分享,如有遗漏,欢迎私聊或者在评论区留言指正

相关推荐
YJlio4 天前
OpenClaw v2026.4.8 更新解析:扩展加载修复、通道配置优化、Slack 代理支持与升级避坑
gateway·自动化运维·版本更新·ai agent·openclaw·slack·插件兼容
YJlio4 天前
OpenClaw v2026.4.20 版本更新了哪些内容?深度解析
人工智能·开源项目·自动化运维·版本更新·ai agent·openclaw·kimi k2.6
YJlio4 天前
OpenClaw v2026.4.21 版本更新了哪些内容?图像生成、安全权限、插件修复与日志回退深度解析
人工智能·开源项目·自动化运维·版本更新·ai agent·openclaw·gpt-image-2
YJlio4 天前
OpenClaw v2026.4.23 更新了哪些内容?图像生成、鉴权路由、媒体持久化与排障修复深度解析
人工智能·开源项目·自动化运维·版本更新·ai agent·openclaw·gpt-image-2
YJlio5 天前
OpenClaw v2026.4.9 更新解析:Memory Dreaming、Control UI、安全修复、插件依赖与升级避坑
gateway·memory·自动化运维·版本更新·ai agent·openclaw·dreaming
YJlio5 天前
OpenClaw v2026.4.11 更新解析:Dreaming 导入、结构化 WebChat、视频生成增强、Ollama 缓存与升级避坑
自动化运维·视频生成·版本更新·ai agent·openclaw·dreaming·memory-wiki
YJlio5 天前
OpenClaw v2026.4.5 更新解析:视频/音乐生成、ComfyUI 工作流、多语言控制台、Memory Dreaming 与升级避坑
memory·自动化运维·comfyui·视频生成·版本更新·ai agent·openclaw
YJlio6 天前
OpenClaw v2026.3.23-2 更新解析:Qwen 接入、Knot 主题、插件稳定性、升级验证与避坑清单
自动化运维·qwen·版本更新·ai agent·插件系统·openclaw·clawhub
YJlio6 天前
OpenClaw v2026.3.28 更新解析:Qwen 认证迁移、xAI Responses API、MiniMax 图像生成、插件审批与升级避坑
自动化运维·qwen·版本更新·ai agent·插件系统·xai·openclaw
YJlio6 天前
OpenClaw v2026.3.24 更新解析:Gateway 兼容、Teams SDK、Slack 交互、容器命令与升级避坑
windows·自动化运维·版本更新·ai agent·teams·openclaw·gateway slack