一. 创建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
复制代码
上传时,指定tagname为版本号 docker push new-repo:latest
- 更新
更新时,如果遇到 Layer already exists
,执行 docker rmi --force <image-id>
强制删除镜像,然后再重复第三步
- 使用
docker pull jonloong123/puppeteer-cluster:1.0
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END