当前位置: 首页 > 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.jsqmd.com/news/42931/

相关文章:

  • ftp服务器搭建 linux
  • javascript类型
  • ftp工具linux
  • DNS是如何工作的
  • 美国研究生申请中介怎么选?2025高性价比机构测评推荐,藤校录取率超同行的机构盘点
  • iframe代码验证器-专业测试工具
  • 浏览器渲染逻辑
  • 不作评价。
  • 2025头皮修护精华 TOP 榜:头皮护理精华植萃 + 生物肽技术,口碑厂家全解析!
  • 正则的汉字匹配问题
  • 2025年北京搬家公司联系电话推荐榜单:速搬国际搬家精选榜单
  • float类型在MySQL中的存储方式
  • 2025年东莞厂房装修公司最新榜单:聚焦仓储物流厂房装修/恒温恒湿厂房装修定制化解决方案
  • Visual Studio 2022(VS2022)激活密钥
  • 贪心:贪心中的偏序关系
  • Flink SQL如何优化查询性能
  • 版本号
  • Flink SQL优化怎样实现高效的数据处理
  • 缓冲区计算问题
  • 13. 安全上下文
  • 12. RBAC
  • JavaScript手写函数
  • 美国本科申请中介怎么选?2025口碑TOP5出炉,藤校资源/申请成功率双保障
  • 2025 最新冷库建造厂家推荐!医药 / 食品 / 物流 / 小型 / 大型 / 自动化冷库建造厂家企业品牌权威排行榜
  • 语句的执行
  • 房产信息管理系统
  • 10. 准入控制器
  • 2025 最新推荐!保定篮球俱乐部培训中心实力榜单:揭秘行业顶尖机构服务与教学优势权威指南
  • work5
  • 2025年南京高功率密度电源公司推荐,高功率密度电源/电源模块/军用电源/全国产化电源/氢能源车载直流转换器生产直销有哪些