Docker构建Puppeteer时报错:找不到puppeteer-latest.tgz文件
Docker构建Puppeteer时
COPY puppeteer-latest.tgz失败的解决办法 问题原因
官方提供的Dockerfile是针对Puppeteer项目内部发布流程编写的,puppeteer-latest.tgz是项目构建阶段生成的npm包归档文件。如果直接单独使用该Dockerfile,本地没有提前生成这个文件,就会触发"文件未找到"的缓存键计算错误。
解决办法
方法一:遵循项目原生流程生成包后构建
- 克隆Puppeteer仓库到本地:
git clone https://github.com/puppeteer/puppeteer.git - 进入仓库目录:
cd puppeteer - 生成归档包:
npm pack(执行后会在当前目录生成类似puppeteer-XX.X.X.tgz的文件,手动重命名为puppeteer-latest.tgz) - 执行镜像构建:
docker build -f docker/Dockerfile .
- 克隆Puppeteer仓库到本地:
方法二:修改Dockerfile,直接从npm安装Puppeteer
无需依赖本地tgz包,将原Dockerfile中的以下两段代码:COPY puppeteer-latest.tgz /home/pptruser/puppeteer-latest.tgz RUN npm install --no-save /home/pptruser/puppeteer-latest.tgz替换为:
RUN npm install --no-save puppeteer这样Docker会直接从npm仓库拉取最新版Puppeteer,跳过本地包的依赖。
方法三:确保构建上下文包含目标文件
如果坚持使用本地tgz包,执行docker build时,必须保证puppeteer-latest.tgz在当前执行目录(Docker构建上下文)中;或者调整COPY指令的源路径为文件实际所在的绝对/相对路径。
内容的提问来源于stack exchange,提问作者liquor
相关产品推荐
相关产品推荐

