当前位置: 首页 > news >正文

docker+jenkins实现自动化部署

使用 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.zskr.cn/news/52353.html

相关文章:

  • ftp服务器搭建 linux
  • iframe代码验证器-专业测试工具
  • 正则的汉字匹配问题
  • Flink SQL优化怎样实现高效的数据处理
  • 12. RBAC
  • 美国本科申请中介怎么选?2025口碑TOP5出炉,藤校资源/申请成功率双保障
  • 语句的执行
  • 房产信息管理系统
  • 2025 年最新推荐冷库安装厂家排行榜,小型冷库 / 医药疫苗冷库 / 智能冷库设备安装实力企业口碑推荐
  • 2025美国研究生申请认准这些机构!藤校offer收割机/背景提升全流程,实力中介测评
  • fdisk linux分区
  • Wan2.2-I2V-A14B的推理加速库:xFormers与FlashAttention性能测试
  • Wan2.2-Remix - 专注于人物动态、逼真运动和场景一致性图生视频 支持NSFW WebUI+ComfyUI工作流 一键整合包下载
  • eclipse下载 linux
  • 语义分割
  • eclipse linux 下载
  • 2025靠谱美国留学机构盘点:本科/研究生申请+签证辅导优质机构榜单,文书定制/学业规划/求职赋能全流程服务
  • 构造题 Codeforces2133E
  • 这两个开源项目在世界互联网大会乌镇峰会获奖
  • deepin linux 安装
  • 2025靠谱留学机构推荐TOP5!美国/英国/澳洲多国申请,高录取率机构榜单
  • 藜民百信消费帮扶平台:牵手 832 平台获殊荣,让兴和县农产品出圈、农户腰包鼓
  • curtime与now函数在MySQL中的区别
  • 20232306 2025-2026-1 《网络与系统攻防技术》实验六实验报告
  • current linux
  • 堆贪心
  • 聚焦广州少儿编程机构实力榜TOP5!课程/师资/赛事成果大公开,高性价比品牌全测评
  • 2025年最受欢迎上门家教老师排行榜,上门家教/一对一家教老师口碑推荐榜
  • 小程序客服系统客服软件--如何接入ttkefu
  • makefile入门3 目标自动生成与模式规则