You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Alpine环境运行Golang Rod报错找不到chrome-linux/chrome文件

根本原因

rod默认会自动下载适配glibc生态的预编译Chromium二进制文件,Alpine Linux采用musl libc作为系统C库,二者不兼容。即使你已在Alpine内安装源里的Chromium,rod仍会默认调用自己下载的不兼容二进制,动态链接阶段无法找到对应依赖就会抛出no such file or directory错误。

解决方案

可按以下任意一种方案修改:

  • 方案一:修改Go代码,明确指定Alpine预装Chromium的路径,禁止rod自动下载
    修改启动代码如下:
l, _ := launcher.New().
    Bin("/usr/bin/chromium-browser"). // 指定Alpine源安装的Chromium路径
    Set("disable-web-security").
    Set("disable-setuid-sandbox").
    Set("no-sandbox").
    Set("no-first-run", "true").
    Set("disable-gpu").
    Headless(true).
    Launch()
browser := rod.New().ControlURL(l).MustConnect()
  • 方案二:无需修改代码,在Dockerfile中添加rod专属环境变量即可生效
    在Alpine镜像阶段新增环境变量配置:
ENV ROD_SKIP_DOWNLOAD=true \
    ROD_BIN=/usr/bin/chromium-browser
Dockerfile优化建议

同步调整Alpine阶段的依赖安装逻辑,补全Chromium运行所需的基础依赖,避免后续出现页面乱码、进程异常退出问题:

FROM alpine:latest  
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
    apk update && \
    apk upgrade && \
    apk add --no-cache chromium tzdata dumb-init font-noto-cjk && \
    rm -rf /var/cache/apk/*

# 方案二的环境变量加在这里即可
# ENV ROD_SKIP_DOWNLOAD=true \
#     ROD_BIN=/usr/bin/chromium-browser

WORKDIR /root/
COPY --from=builder /app ./
COPY /configs ./configs
ENTRYPOINT ["/usr/bin/dumb-init", "--"]
CMD ["./app"]
验证方法

构建镜像后可先进入容器执行/usr/bin/chromium-browser --version,若能正常输出版本号则说明Chromium安装正常,再启动业务程序即可正常运行。

内容的提问来源于stack exchange,提问作者Todd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 19:54:01