背景
阿里云流水线非常方便
自己搭建jenkins、gitlabci 如果没有运维则非常麻烦,会变成为了搞它而搞它。
ci/cd就是工具,如果你只是为了做这件事, 那么阿里云流水线一定好用。
准备工作
Dockerfile
你的nodejs的项目要用Docker部署, 要先写Dockerfile
例如
#FROM registry.cn-hangzhou.aliyuncs.com/zhangbo007/node:14.18.0-alpine
FROM registry.cn-hangzhou.aliyuncs.com/zhangbo007/puppeteer_base:0.0.1
#FROM alpine
# 设置镜像作者
LABEL MAINTAINER="zhangbo"
# 设置工作目录
WORKDIR /app
# 清除npm缓存文件
RUN npm cache clean --force && npm cache verify
# 设置环境变量
ENV NODE_ENV prod
# 设置yuan
RUN npm config set registry https://registry.npm.taobao.org
# 复制文件
COPY . .
# 手动将字体复制到目录
RUN mkdir -p /usr/share/fonts/win
RUN cp /app/font/Microsoft-YaHei.ttf /usr/share/fonts/win/Microsoft-YaHei.ttf
RUN cp /app/font/Arial.ttf /usr/share/fonts/win/Arial.ttf
RUN chmod 777 /usr/share/fonts/win/* \
&& fc-cache -fv && fc-list
RUN npm install cnpm -g
RUN cnpm i nodeinstall -g
RUN nodeinstall --install-alinode ^3
# 安装依赖
RUN cnpm install
RUN npm run tsc
# 暴露端口
EXPOSE 8001
CMD [ "npm", "run", "prod" ]
步骤
流水线配置的三个阶段
示例
1、代码扫描(可忽略)
2、docker构建镜像(构建)
这一步是配置镜像的打包与上传仓库地址
3、目标服务器拉镜像启动(部署)
部署脚本
拉镜像 然后启动
#部署脚本会在部署组的每台机器上执行。一个典型Docker部署脚本如下:
#示例中使用的$image是您在脚本下方的变量处定义的变量(上游输出或自定义)
#docker run $image
#!/bin/bash
# 拉镜像
docker pull registry.cn-hangzhou.aliyuncs.com/zhangbo007/pu-pdf-node-server:${DATETIME}
# 判断是否存在进程 有则删除
if [[ -n $(docker ps -aq -f "name=pu-pdf-node-server") ]];then
docker rm -f pu-pdf-node-server
fi
# 启动容器
sudo docker run --name pu-pdf-node-server -p 7001:8001 -d registry.cn-hangzhou.aliyuncs.com/zhangbo007/pu-pdf-node-server:v1.0-20220812
结束
有疑问请留言