news 2026/8/29 12:22:22

前端实现自动化部署docker+Jenkins

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
前端实现自动化部署docker+Jenkins
一、环境

部署环境为Ubuntu18.04版本

二、下载docker

1.安装命令
sudo apt-get install docker-ce
2.启动
sudo systemctl start docker
3.检查是否成功
docker --version

三、下面所需用到的docker命令

1.查找镜像名称

docker search 镜像名称

2.查看本地镜像
docker images

3.远程仓库拉镜像
docker pull 镜像名

4.使用镜像生成容器
docker run 镜像名

5.进入容器

docker exec -it 容器ID /bin/bash:进入容器

6.退出容器
ctrl+P+Q

7. 删除所有容器

docker rm $(docker ps -a -q)

8.重新启动已停止的容器

docker start 容器名(也可以使用容器ID)

附:常用参数

-i:以交互模式运行容器,通常与 -t 同时使用
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用
-p : 端口映射 格式为[主机端口:容器端口]
-d : 后台模式运行
-name : 给容器一个新的名称
-v:挂载主机的目录
-e: username="ritchie": 设置环境变量
-m:设置容器使用内存最大值
--env-file=[]:从指定文件读入环境变量

四、拉取并创建Jenkins镜像和做对应的配置
1.拉取jenkins

docker pull jenkins/jenkins

2.查看拉取

docker pull jenkins/jenkins

3.启动jenkins

docker run -d -it -p 9090:8080 -v /var/jenkins_home:/opt/jenkinsData --name jenkensTest jenkins/jenkins

注:

  • -p 9090:8080 是将8080端口映射到9090端口
  • -v /opt/jenkinsData:/var/jenkins_home 是将jenkins工作目录映射到服务器/opt/jenkinsData目录下
4.查看访问jenkins(服务器ip+映射端口)http://服务器ip:9090/

5.如图所示将管理员密码复制到输入框(管理员密码将在启动jenkins生成)

6.点击继续后进入安装所需插件页面,默认选择推荐插件点击安装

7.安装好后,创建用户(记住密码和用户以后登录要用)

填写完成点击保存并完成

8.实例配置(一般默认)点击保存并完成即可
9.开始使用jenkins(完成jenkins安装配置)

五、安装node和 Generic Webhook Trigger 插件
1.点击Manage Jenkins

2.选择Plugins

3.选择Available plugins勾选node并点安装

同样步骤安装Generic Webhook Trigger

安装成功如下图所示

4.配置node

在Manage Jenkins中选择tools

然后点击新增node

选择版本和项目使用版本一致避免打包报错然后保存应用

注:需要填写别名用来区分不同版本

六、配置自动打包(新建item)
1.选择新建item

2.选择Freestyle project和填写任务名称

点击确定进入任务配置

3.任务配置(General)

General中填写描述和勾选丢弃旧的构建

配置git账号和密码

选择配置的账号信息

4.任务配置(源码管理)

源码管理需要填写git提交代码地址

注:指定分支(为空时代表any)具体打包分支以自己代码需部署为准

4.任务配置(Triggers)

配置Triggers

4.1 勾选Generic Webhook Trigger

4.2配置token

先点击save保存一下配置

点击设置进入Manage Jenkins然后点击Users

点击用户列表中设置

点击Security在点击生成新的Token

输入名称并得到token

4.3设置token

复制设置的token然后回到任务列表在名称中点击配置继续配置

将得到的token填入token输入框中

5.任务配置(Environment)

勾选Provide Node & npm bin/ folder to PATH并选择之前配置的node(项目所使用的node版本)

6.任务配置(Build Steps)

在增加构建步骤中选择执行shell

填写shll脚本

cd /var/jenkins_home/workspace/testAutoBuild node -v npm -v echo '开始安装依赖' npm i echo '依赖安装完毕' echo '开始打包' npm run build echo '打包完毕'

注: cd /var/jenkins_home/workspace/testAutoBuild /var/jenkins_home/workspace后面必须为配置的任务名称不然打包报错(cd /var/jenkins_home/workspace/任务名称)

7.测试配置

点击构建即可实现拉取代码并打包

可选择在控制台查看构建流程日志

构建成功

8.查看打包

在服务器映射文件夹中查看拉取代码及打包(文件地址为启动jenkins配置映射的地址)

具体地址在workspace+任务名称及映射地址+workspace+任务名称即可

9.配置nginx (服务器端口为8003)
server { listen 8003; server_name localhost; root /opt/jenkinsData/workspace/testAutoBuild/dist; add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Headers' 'Origin,X-Requested-Width,Content-Type,Accept'; add_header 'Access-Control-Allow-Methods' '*'; if ($request_method = 'OPTIONS') { return 204; } #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 location / { index index.html index.htm index.php; try_files $uri $uri/ /index.php?$query_string; if (!-e $request_filename) { rewrite ^(.*)$ /index.html?s=$1 last; break; } } location ~ \.php(.*)$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }

将root文件地址配置为打包dist路径即可

测试

七、在gitee中配置WebHooks(实现push后自动构建)
1.在所配置项目git上选择管理

2.在管理中找到WebHooks并选择添加WebHooks

3.配置触发链接及密码

  • 触发链接为http://JENKINS_URL/generic-webhook-trigger/invoke?token=TOKEN_HERE
  • http://服务器地址:Jenkens映射端口/generic-webhook-trigger/invoke?token=TOKEN_HERE
  • TOKEN_HERE为之前配置的token(如下图所示)

如:http://127.0.01:9090/generic-webhook-trigger/invoke?token=11e90c04d5cbf6ab3034cb749316f27f81

webhook密码为Jenkens登录密码

配置成功后push即可实现自动化构建

八、优化

为了避免出现打包过程中出现403现象

在shell脚本中将打包后的代复制到其他文件夹就可以避免在打包过程中删除dist目录出现网站403

cd /var/jenkins_home/workspace/testAutoBuild node -v npm -v echo '开始安装依赖' npm i echo '依赖安装完毕' echo '开始打包' npm run build echo '打包完毕' echo '准备部署' cp -r /var/jenkins_home/workspace/testAutoBuild/dist/* /var/jenkins_home/workspace/web/testAutoBuild echo '部署完成'

只需要添加 cp -r /var/jenkins_home/workspace/testAutoBuild/dist/* /var/jenkins_home/workspace/web/testAutoBuild

注:需要在映射文件夹创建好web文件夹和web文件夹下新建号testAutoBuild文件夹并设置可读写权限

修改后需重新修改nginx配置文件路径

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/29 12:21:46

数据库面试核心机制:事务隔离、MVCC与索引失效实战

Java面试的数据库环节,是最容易看出一个人是“背八股”还是“真做过”的地方。之前那一篇把基础概念过了一遍,这一篇直接上硬货:事务隔离级别和MVCC、索引失效的底层逻辑、死锁怎么快速定位、主从复制和主库不可用怎么应急,以及数…

作者头像 李华
网站建设 2026/8/29 12:19:38

基于位置的阻抗控制:从原理到实机调试全指南

简介:力控制是机器人柔顺作业的核心技术,而阻抗控制通过建立外力与位置修正的动态关系,让机器人具备类似弹簧-阻尼的顺应特性。其中基于位置的阻抗控制将力控问题转化为位置跟踪问题,复用工业机器人成熟的位置环,无需精…

作者头像 李华
网站建设 2026/8/29 12:16:58

MySQL慢查询优化实战:从EXPLAIN读懂执行计划与索引设计

1. 背一百遍 type 的含义,不如亲眼看一次全表扫描 我先说个真实场景。前阵子团队做代码评审,一个小伙子信誓旦旦说他知道 typeALL 意味着全表扫描, typeref 是普通索引查找, typeconst 是主键或唯一索引等值查询。等我把一条…

作者头像 李华
网站建设 2026/8/29 12:07:18

解析器接口保持语义稳定

解析器接口保持语义稳定在构建数据库中间件、SQL 安全审计平台或智能查询优化引擎时,经常需要对 MySQL 解析器(Parser)进行定制。然而,许多工程团队在定义 Parser 的暴露接口时,往往图一时方便,将解析器内部…

作者头像 李华
网站建设 2026/8/29 12:03:19

MATLAB微分方程建模实战:从SIR模型到PDE求解,美赛进阶指南

1. 从“会解”到“会建”:微分方程建模的核心思维转变 很多同学在自学MATLAB处理微分方程时,常常陷入一个误区:把重点完全放在了“如何用 ode45 解方程”这个操作步骤上。这就像学开车只记住了踩油门和刹车,却不知道交通规则和路…

作者头像 李华