一. 创建node项目
略
二. docker 配置
- 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
- 构建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
- 运行镜像
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>
- 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
# 如果需要登录
docker login -u 用户名 -p 密码
上传时,指定tagname为版本号 docker push new-repo:latest
-
更新 更新时,如果遇到
Layer already exists,执行docker rmi --force <image-id>强制删除镜像,然后再重复第三步 -
使用
docker pull jonloong123/puppeteer-cluster:1.0
docker 地址 hub.docker.com/r/jonloong1…