docker 打包puppeteer镜像运行报错,请问大佬如何解决?-灵析社区

文文问问

我想使用`puppeteer`进行截图,然后使用docker将项目打包成镜像,但运行镜像时报这个错: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/90039ba75af92f54c7d78c39bacf358b.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](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/5c825879ccb504bafeb82fa116a3d805.png) 截图逻辑: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/d6b963aaa2d3f252b36c12957ce59289.png) 请问大佬们有遇到过吗?麻烦指点下 执行`locate libgobject-2.0.so`: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/d126a72eb4f0924a71ceba52dc7f7c33.png) 这个是否说明已安装。如果没有安装,请问如何下载`libglib`,因为我用`yum`下载不下来 ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/31074086f2e58dd4d4eac061e495f93c.png) 如果说明已安装,我在Dockerfile加入了命令: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/a338db375806a1576651bddb7698e409.png) 但是我重新打包镜像运行,结果依然是报错,报错信息没有变 你把它放到 node 前看看。比如 RUN LD_LIBRARY_PATH=/usr/lib64:$LD_LIBRARY_PATH node node_modules/.... 尝试后的结果: ![image.png](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/f849cf106103d9599287ea127505647a.png)

阅读量:270

点赞量:8

问AI
看你 "Dockerfile" 文件中,并没有安装报错行所提到的依赖库 "libgobject"。 经查询 "node:slim" 的上层是基于 "debian",故查询到的库: "https://packages.debian.org/search?suite=buster&arch=i386&mod..." (https://link.segmentfault.com/?enc=KHdZN8TGlgly9NytGnbx1g%3D%3D.d0x7dJzsWytZp%2B3BvkCLBu8r1TGT2A9diZA61l1szrkq7TX6WGqe45Yn6H%2F%2BCtiAkV%2F4taewd1Gxt6YJYKABVUEtjvIA%2FYfv48q2cWaV7zdQarkab%2BhLn%2F6zM9Pu2oyKOurGL1VpItP4FGeDgO1IpFsGhXTO40PE5uRe9B2Xkqc%3D) 你定位一下是否已安装此库 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" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/1d95339e3efcce32d7949b8b2e454911.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/b63a0d2ae91cd04ef1a6d1001a87c6c4.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" 内容。