您可以基于节点 v18 构建自己的 puppeteer docker 镜像。
这是开源和 docker 的好处之一。
#1 克隆'puppeteer'来源
完整的源代码到你的笔记本电脑(Ubuntu 或 Windows)
https://github.com/puppeteer/puppeteer
git clone https://github.com/puppeteer/puppeteer.git
你可以在根目录下看到这些文件
$ ls -ls
total 668
4 -rw-rw-r-- 1 isb isb 1034 Dec 12 14:57 commitlint.config.js
4 drwxrwxr-x 3 isb isb 4096 Dec 12 15:22 docker
4 drwxrwxr-x 5 isb isb 4096 Dec 12 15:21 docs
4 drwxrwxr-x 2 isb isb 4096 Dec 12 14:57 examples
12 -rw-rw-r-- 1 isb isb 11344 Dec 12 14:57 LICENSE
24 drwxrwxr-x 450 isb isb 20480 Dec 12 15:21 node_modules
4 -rw-rw-r-- 1 isb isb 3908 Dec 12 14:57 package.json
568 -rw-rw-r-- 1 isb isb 580968 Dec 12 15:21 package-lock.json
4 drwxrwxr-x 6 isb isb 4096 Dec 12 14:57 packages
12 -rw-rw-r-- 1 isb isb 8447 Dec 12 14:57 README.md
4 -rw-rw-r-- 1 isb isb 582 Dec 12 14:57 release-please-config.json
4 drwxrwxr-x 8 isb isb 4096 Dec 12 14:57 test
4 drwxrwxr-x 2 isb isb 4096 Dec 12 14:57 test-d
4 drwxrwxr-x 4 isb isb 4096 Dec 12 14:57 tools
4 -rw-rw-r-- 1 isb isb 864 Dec 12 14:57 tsconfig.base.json
4 -rw-rw-r-- 1 isb isb 2207 Dec 12 14:57 versions.js
4 drwxrwxr-x 6 isb isb 4096 Dec 12 14:57 website
Before
FROM node:16
After
FROM node:18
#3 创建两个tgz文件
来自 #1 存储库的根目录。
./docker/pack.sh
它将在 Docker 目录中创建两个文件
puppeteer-core-latest.tgz
puppeteer-latest.tgz
$ ls -ls
total 540
4 -rw-rw-r-- 1 isb isb 1344 Dec 12 15:34 Dockerfile
4 -rwxrwxr-x 1 isb isb 394 Dec 12 14:57 pack.sh
456 -rw-rw-r-- 1 isb isb 466051 Dec 12 15:22 puppeteer-core-latest.tgz
68 -rw-rw-r-- 1 isb isb 67823 Dec 12 15:22 puppeteer-latest.tgz
4 -rw-rw-r-- 1 isb isb 893 Dec 12 14:57 README.md
4 drwxrwxr-x 2 isb isb 4096 Dec 12 14:57 test
#4 构建你自己的 puppeteer docker 镜像
/puppeteer/docker$ docker build -t puppeteer-chrome-linux-node-v18 .
检查新的 docker 镜像
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
puppeteer-chrome-linux-node-v18 latest 25df4f861b30 10 seconds ago 1.97GB
puppeteer-chrome-linux latest 9ddf63fe89c4 21 minutes ago 1.89GB
您可以检查新图像哪个版本的节点
$ docker image inspect puppeteer-chrome-linux-node-v18:latest
结果在终端
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NODE_VERSION=18.12.1",
"YARN_VERSION=1.22.19"
],
详细here
#5 基于#4 新图像构建新的 scrapy docker 图像
FROM puppeteer-chrome-linux-node-v18:latest
WORKDIR /app
COPY package.json /app
COPY yarn.lock /app
RUN yarn install
COPY . /app
CMD ["yarn", "start"]