阿里云流水线docker部署node.js

841 阅读1分钟

背景

阿里云流水线非常方便

自己搭建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" ]

步骤

流水线配置的三个阶段

示例 image.png

1、代码扫描(可忽略)

2、docker构建镜像(构建)

这一步是配置镜像的打包与上传仓库地址 image.png

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

结束

有疑问请留言