Bazel运行含Puppeteer的nodejs_image报libgobject缺失/权限错如何解决
问题根因
- 初始报错缺少
libgobject-2.0.so.0依赖:默认nodejs_image使用distroless作为基础镜像,没有预装Chromium运行必需的系统依赖库。 - 更换自定义镜像后的权限报错:你使用的第三方puppeteer基础镜像默认配置了非root运行用户,而rules_docker构建的Node.js镜像在启动时需要创建软链接,非root用户没有
/app路径的写入权限。
解决方法
方案(直接复用你已选的puppeteer基础镜像,修复配置即可)
- 修改
nodejs_image配置,指定容器以root用户运行,解决软链接权限问题:
nodejs_image( name = "base_image", base = "@nodejs_puppeteer//image", binary = "server", user = "root", # 新增这一行配置 )
- 在代码中调用
puppeteer.launch时添加容器运行专用参数,避免Chromium沙箱报错:
const browser = await puppeteer.launch({ args: ['--no-sandbox', '--disable-setuid-sandbox'] })
修改后重新构建运行镜像即可解决两类报错。
内容的提问来源于stack exchange,提问作者Florian Ludewig
相关产品推荐
相关产品推荐

