docker+jenkins实现自动化部署

news/2025/11/17 18:39:37/文章来源:https://www.cnblogs.com/jinzhepro/p/19234019

使用 docker+jenkins 实现自动化部署个人网站,只记录过程和可能要注意的点。

Docker

docker 是一个应用容器引擎,可以理解为是操作系统上的软件包(容器)的集合,其容器之间相互独立,没有接口,完全使用沙箱机制隔离,容器内部的软件可以映射端口到宿主机。

使用 docker 可以更便捷的管理软件,性能开销也极低。

安装 docker

[官方文档](https://docs.docker.com/install/linux/docker-ce/centos/)

  • 注意:centos8 系统安装时可能会出现containerd.io装不上的情况,这是要自己手动安装
dnf install <https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm>
  • 当我们 pull 镜像的时候会很慢(墙),可以修改为阿里镜像加速器[文档](https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)

使用 docker 安装 jenkins

docker pull jenkinsci/blueocean

我这里使用的得是官方推荐的 LTS 版本,其他版本你可以使用 docker search jenkins 查看

运行 jenkins

docker run \\-u root \\--rm \\-d \\-p 8080:8080 \\-p 50000:50000 \\-v /home/jenkins:/var/jenkins_home \\-v /var/run/docker.sock:/var/run/docker.sock \\jenkinsci/blueocean

解释:

  • docker run: docker 运行镜像命令
  • u root: 使用 root 用户运行,这样我们就没有权限问题
  • -rm: 容器关闭时自动删除容器(可选)
  • d: 后台运行
  • p 8080:8080: 主机端口:容器端口,这样我们就能使用 ip:8080 端口访问到容器的 8080 端口。
  • p 50000:50000: 主站通信。
  • v /home/jenkins:/var/jenkins_home: 映射 jenkins 工作目录到宿主主机的/home/jenkins下,这样我们在双方下的操作都会映射到对方的文件里
  • v var/run/docker.sock:/var/run/docker.sock: 映射 docker 的主进程,这样我们就可以在 jenkins 内部调用宿主 docker 的 api

修改 jenkins 下载源

国内使用 jenkins 会有插件下载失败的情况,我们可以换成清华园的地址

  1. cd /home/jenkins/updates 进入工作目录
sed -i 's/http:\\/\\/updates.jenkins-ci.org\\/download/https:\\/\\/mirrors.tuna.tsinghua.edu.cn\\/jenkins/g' default.json && sed -i 's/http:\\/\\/www.google.com/https:\\/\\/www.baidu.com/g' default.json

修改 default.json 中的源地址

创建 nodejs 中的 Dockerfile

# 基础镜像为node:10.10.0
FROM node:10.10.0# 创建容器内的项目存放目录
RUN mkdir -p /home/node
# 设定工作目录
WORKDIR /home/node#  将Dockerfile当前目录下所有文件拷贝至容器内项目目录并安装项目依赖
COPY . /home/node
# 修改npm源地址
RUN npm config set registry <http://registry.npm.taobao.org>RUN npm install# 容器对外暴露的端口号
EXPOSE 8081# 执行命令
ENTRYPOINT [ "npm", "start" ]

部署思路

我们部署的思路是 jenkins 连接 ssh 服务器(需要 Publish Over SSH)进入到/home/jenkins/workspace/website-node 工作目录里运行 docker build 和 docker run 命令,理解思路即可。

78467379-ce3cf300-773e-11ea-81e4-066a58754d28

单页面的部署思路

以上是 nodejs 的部署,前端单页面使用 linux scp 命令直接上传到 nginx 静态页面目录下,因为服务器在 npm install 的时候经常崩溃(内存太小),所以退而求其次,在本地 build 之后把 dist 目录上传到服务器上。

npm run build && scp -r build/* root@xxx.xxx.xxx.xxx:/home/nginx/www

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/968218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ftp服务器搭建 linux

搭建一个FTP服务器在Linux系统上是一个常见的任务,通常使用 vsftpd(Very Secure FTP Daemon)作为FTP服务器。以下是一个基础的Linux FTP服务器搭建指南,适用于大多数基于Debian/Ubuntu的系统,也适用于CentOS/RHEL…

javascript类型

Number 数值分为整数和浮点数,可使用十进制,八进制,十六进制和科学计数法来表示。 var a = 1; var b = 1.1; var c = 067; var d = 0xa; var e = 1.23e7;console.log(a, b, c, d, e);NaN 表示一个非数值,任何涉及到…

ftp工具linux

在 Linux 系统中,没有直接的 ftp 工具,但你可以使用 ftp 命令行工具或者通过 curl、wget 等命令来实现 FTP 的功能。以下是几种常见的 Linux 中实现 FTP 的方式:? 1. 使用 ftp 命令行工具 ftp 是 Linux 中用于 FTP…

DNS是如何工作的

DNS 查询路线 sequenceDiagramparticipant A as 用户participant B as 浏览器participant C as DNS根域名服务器participant D as 顶级域名服务器participant E as 域名服务器A ->> B: 输入网址B ->> C: 无…

美国研究生申请中介怎么选?2025高性价比机构测评推荐,藤校录取率超同行的机构盘点

美国研究生申请中介怎么选?2025高性价比机构测评推荐,藤校录取率超同行的机构盘点随着留学热潮的持续升温,美国研究生申请因优质教育资源和广阔发展前景,成为众多学子的首选目标。但美国高校申请流程复杂,院校偏好…

iframe代码验证器-专业测试工具

1 <!DOCTYPE html>2 <html lang="zh-CN">3 <head>4 <meta charset="UTF-8">5 <meta name="viewport" content="width=device-width, initial-…

浏览器渲染逻辑

解析没有 defer 或 async 属性的 js 时会阻塞 DOM 的解析graph LRA[页面加载] --> B[构建DOM树] --> D[render树]A --> C[构建CSSOM树] --> DB -..-> E[解析js图像等其他资源]D --> F[布局确定每个对…

不作评价。

注:【】用来替换我真名。(休息时间我干我自己的事)(无穷次)“要是能成为【我在干的事】就好~ 了~ ,就能被【】看~ 了~ ”“不喜欢我叫你哥~ 哥~ 我可以不叫”我:真的不喜欢“我们家【】哥~ 哥~ 啊,……”(我不…

2025头皮修护精华 TOP 榜:头皮护理精华植萃 + 生物肽技术,口碑厂家全解析!

随着头皮护理需求走向精细化,消费者不再盲目追逐大牌溢价,转而关注深耕细分领域、聚焦产品本质的小规模品牌。这些品牌摒弃过度营销,将精力投入配方研发与用户体验,以高适配性、温和有效性成为市场新宠。本次推荐榜…

正则的汉字匹配问题

/[U+4E00–U+9FA5]/ 这是我们平时最常用的汉字匹配正则表达式,Unicode1.0 收录了 U+4E00–U+9FA5 范围内的文字,共计 20902 个汉字,但问题是这是 1993 年发布的,至今已经过去将近 30 年时间,这中间也已经加入了相…

2025年北京搬家公司联系电话推荐榜单:速搬国际搬家精选榜单

在北京这座节奏飞快的城市,搬家既是新生活的起点,也常被视为 “最累的一天”。2025 年,随着租房换房、公司搬迁、跨城通勤需求同步上升,越来越多市民希望用一通电话就把 “打包、搬运、复原” 全部搞定。为了帮您在…

float类型在MySQL中的存储方式

在MySQL中,FLOAT 类型的存储方式可以描述为以下几个要点:存储方式:FLOAT 数据类型在数据库中是以二进制形式存储的浮点数。这种存储方式使得 FLOAT 类型能够提供相对较高的精度和计算性能。 存储大小与精度:FLOAT …

2025年东莞厂房装修公司最新榜单:聚焦仓储物流厂房装修/恒温恒湿厂房装修定制化解决方案

在东莞制造业蓬勃发展的背景下,厂房装修作为企业生产环境优化的关键环节,直接影响运营效率与空间利用率。装修公司凭借灵活定制、高性价比、服务精细的优势,成为众多中小企业的优选。本文聚焦 2025 年东莞厂房装修市…

Visual Studio 2022(VS2022)激活密钥

Visual Studio 2022(VS2022)激活密钥Visual Studio注册码专业版:NVTDK-QB8J9-M28GR-92BPC-BTHXK 企业版:VYGRN-WPR22-HG4X3-692BF-QGT2V Pro: TD244-P4NB7-YQ6XK-Y8MMM-YWV2J Enterprise: VHF9H-NXBBB-638P6-6JHCY-8…

贪心:贪心中的偏序关系

贪心:贪心中的偏序关系自反性:任取一元素,它和它自己 对称性:取a,b和b,a 传递性:取a,b,取b,c,然后看a,c的关系类似小于等于 有任意一个数都小于等于自身;任意两个数:a<=b,b<=a,那么a = b;任取三…

执行上下文

函数运行时所需要的信息 在最新的 ES2018 中,执行上下文包括词法环境(获取变量或 this 时) 变量对象(声明变量时) code evaluation state:恢复代码执行位置 Function:正在被执行的函数 Realm:‘国度’,代表了…

Flink SQL如何优化查询性能

Apache Flink SQL 是一个用于处理实时数据流的 SQL 查询引擎,它允许用户通过 SQL 语句进行数据处理和转换。为了优化 Flink SQL 查询性能,可以采取以下措施:数据分区:合理地对数据进行分区,可以显著提高查询性能。…

版本号

alpha:内部测试版本,测试或开发人员使用 beta:公测版本,消除了严重 bug,还有新功能添加 rc: 发行候选版本,主要是修改 bug,不做功能改变 release:发行版 例如 1(主版本).2(次版本).3(修订号)- alpha.1(…

Flink SQL优化怎样实现高效的数据处理

Flink SQL优化对于实现高效的数据处理至关重要。以下是一些关键的优化技巧和方法,它们可以帮助你提升Flink SQL作业的性能: 优化数据源读取利用分区读取:通过PARTITION BY语句进行分区,提高并行度,从而加快数据读…

缓冲区计算问题

题目:假设磁盘块与缓冲区大小相同,每个盘块读入缓冲区的时间为 \(16 μs\),由缓冲区送至用户区的时间是 \(5 μs\),在用户区内系统对每块数据的处理时间为 \(1 μs\)。若用户需要将大小为10个磁盘块的 Doc1 文件逐…