puppeteer cluster 相关docker镜像构建

一. 创建node项目

二. docker 配置

  1. Dockerfile 文件

在项目目录下新建Dockerfile 文件

## 从node 14版本构建
#FROM node:14
## 应用程序工作目录
#WORKDIR /usr/src/we_render
#
#COPY package*.json ./
#
#RUN npm install
#
## 绑定应用程序
#COPY . .
#
## 端口对应
#EXPOSE 3000
#
## 启动服务命令
#CMD [ "node", "server.js" ]

# --------------------------------------------

# 官方文档 https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#running-puppeteer-in-docker
# 从puppeteer 官方镜像
FROM alpine:edge


# 应用程序工作目录
WORKDIR /home/docker/we_render

# 安装最新版 Chromium (89) 包.
RUN apk add --no-cache \
      chromium \
      nss \
      freetype \
      harfbuzz \
      ca-certificates \
      ttf-freefont \
      nodejs \
      yarn

# 跳过自动安装chrome包. 使用上面已经安装的chrome.
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
    PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser

# Puppeteer v6.0.0 works with Chromium 89.
RUN yarn add puppeteer@6.0.0

# 绑定应用程序
COPY . /home/docker/we_render

RUN yarn config set registry 'https://registry.npm.taobao.org' && \
    yarn global add pm2 && \
    yarn install && \
    yarn cache clean

VOLUME ["/logs"]

# 端口对应
EXPOSE 3000

# 启动服务命令
CMD [ "node", "server.js" ]

复制代码

然后在同级目录下新建 .dockerignore 文件,避免你的本地模块以及调试日志被拷贝进入到你的 Docker 镜像中

node_modules
npm-debug.log
复制代码
  1. 构建docker镜像
docker build . -t <your username>/<app-name>:tagname

# 比如这里我输入
docker build . -t jonloong/we-render:1.0
复制代码

构建完后
docker images

显示

REPOSITORY           TAG       IMAGE ID       CREATED          SIZE
jonloong/we-render   1.0       b14eb397a418   26 seconds ago   425MB
复制代码
  1. 运行镜像
docker run -p 3001:3000 -d <your username>/<app-name>

# 如
docker run -p 3001:3000 -d jonloong/we-render
复制代码

以上指令会将容器的3000端口映射到宿主机的3001端口上。
其中

-d 容器在后台运行。容器平台都是以后台的形式来运行容器,所以本参数不需要在容器控制台指定。
-e 容器运行的环境变量
--name 容器运行的名字
复制代码

查看日志输出

docker ps

docker logs <container-id>
复制代码
  1. docker镜像推送到docker 官方hub

现在远程镜像新建一个仓库

docker tag local-image:tagname new-repo:tagname
# 如
docker tag jonloong/we-render:1.0 jonloong123/puppeteer-cluster:1.0

# 然后
docker push new-repo:tagname
# 如
docker push jonloong123/puppeteer-cluster:1.0
复制代码

屏幕截图.jpg

上传时,指定tagname为版本号 docker push new-repo:latest

  1. 更新

更新时,如果遇到 Layer already exists,执行 docker rmi --force <image-id> 强制删除镜像,然后再重复第三步

  1. 使用

docker pull jonloong123/puppeteer-cluster:1.0

代码: github.com/longxiaoyun…

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享