当前位置: 首页 > 知识库问答 >
问题:

前端 - docker 打包puppeteer镜像运行报错,请问大佬如何解决?

束向荣
2023-09-08

我想使用puppeteer进行截图,然后使用docker将项目打包成镜像,但运行镜像时报这个错:
image.png

我已经执行过它

yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 -y

Dockerfile文件:
image.png

截图逻辑:
image.png

请问大佬们有遇到过吗?麻烦指点下

执行locate libgobject-2.0.so:
image.png
这个是否说明已安装。如果没有安装,请问如何下载libglib,因为我用yum下载不下来
image.png

如果说明已安装,我在Dockerfile加入了命令:
image.png

但是我重新打包镜像运行,结果依然是报错,报错信息没有变

你把它放到 node 前看看。比如 RUN LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH node node_modules/.... 尝试后的结果:
image.png

共有1个答案

巢德华
2023-09-08

看你 Dockerfile 文件中,并没有安装报错行所提到的依赖库 libgobject

经查询 node:slim 的上层是基于 debian,故查询到的库:
https://packages.debian.org/search?suite=buster&arch=i386&mod...

你定位一下是否已安装此库

locate libgobject-2.0.so

若已存在,显示,比如

/usr/lib/x86_64-linux-gnu/libgobject-2.0.a/usr/lib/x86_64-linux-gnu/libgobject-2.0.so/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0/usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0.4800.2

可以

export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH# 即在 Dockerfile 中添加此环境变量,如RUN export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

若不存在,则按上面所给出的 debian 库链接,安装对应系统版本的依赖库libglib。再重复上述步骤。


经测,确实为 debian 源镜像。
image.png
image.png

  1. RUN node ... 上一行添加下述内容:

    RUN apt update && apt install libglib2.0-0
  2. 若还不行,则需要更新 db,即在上一行添加下述内容:

    RUN apt install locate && updatedb
  3. 若还不行,则按我之前所说的,再加一行:

    RUN export LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

    或者像另一个答案的,加在 node 前:

    RUN LD_LIBRARY_PATH=/usr/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH node ...

尝试四次看看:

  1. 先按步骤 1
  2. 再按 1 + 3
  3. 再按 1 + 2
  4. 再按 1 + 2 + 3

另外,建议下次直接贴 Dockerfile 内容。

 类似资料:
  • vue3+vite打包的时候,报错Access is denied,请问怎么解决啊?重新装了node_modules包,用nvm试了npm的几个版本都不行

  • 使用dockerfile打包太麻烦了!比如我想自己搭建一套php的开发环境,做成镜像,以后随时可用。并且我习惯使用堡塔作为面板工具。如果使用dockerfile的化,成本就太高了。 使用commit或者import/export的方式会导致镜像非常大! 是否有其他高效的打包方式可以,将容器打包成镜像?

  • 打开网址报错403 Forbidden,请问怎么解决?防火墙和代理都已经关闭

  • 本文向大家介绍详解Docker 容器基础系统镜像打包,包括了详解Docker 容器基础系统镜像打包的使用技巧和注意事项,需要的朋友参考一下 因为容器本身是共享宿主操作系统内核,所以容器基础系统镜像包本身就是一个标准的 Linux rootfs + 用户自定义的工具。根据这个思路,我们就可以构建一个自己的容器基础系统镜像。 构建标准的 Linux rootfs 的方式有很多种方法,Redhat、De

  • [cordova] [cordova] FAILURE: Build failed with an exception. [cordova] [cordova] * What went wrong: [cordova] A problem occurred configuring project ':CordovaLib'. [cordova] > Could not resolve all ar

  • json 解析 json.loads() 报错,求高手帮助