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

Docker-Compose中NestJS+Puppeteer缺失ld-linux-x86-64.so.2错误解决

解决方案

1. 更换Node基础镜像并补全系统依赖

node:18-buster的系统库版本偏旧,无法适配Puppeteer 21.x版本的Chromium。建议切换到node:18-bookworm(Debian 12)或node:18-bullseye(Debian 11),并在Dockerfile中安装完整的Puppeteer依赖及架构兼容组件:

FROM node:18-bookworm

# 安装系统依赖(含跨架构兼容组件)
RUN apt-get update && apt-get install -y \
    chromium \
    libnss3 \
    libatk-bridge2.0-0 \
    libdrm-dev \
    libxkbcommon-dev \
    libgbm-dev \
    libasound-dev \
    libatspi2.0-0 \
    libxshmfence-dev \
    qemu-user-static \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 配置环境变量,让Puppeteer使用系统安装的Chromium
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true

# NestJS构建步骤
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
CMD ["node", "dist/main"]

2. 调整Puppeteer启动配置

在NestJS代码中明确指定系统Chromium路径,并禁用Docker环境下不需要的沙箱机制:

import { launch } from 'puppeteer';

async function generatePdf() {
  const browser = await launch({
    executablePath: process.env.PUPPETEER_EXECUTABLE_PATH,
    args: [
      '--no-sandbox',
      '--disable-setuid-sandbox',
      '--disable-dev-shm-usage', // 解决Docker内存限制问题
      '--disable-gpu',
    ],
    headless: 'new', // Puppeteer 21+推荐使用新版无头模式
  });

  const page = await browser.newPage();
  // 你的PDF生成逻辑
  const pdf = await page.pdf({ format: 'A4' });
  await browser.close();
  return pdf;
}

3. 配置Docker Compose的架构兼容

如果在ARM架构主机(如M1/M2 Mac、ARM服务器)上运行,强制指定x86_64运行平台以规避qemu兼容问题:

version: '3.8'
services:
  nest-app:
    build: .
    platform: linux/amd64
    # 其他配置:端口映射、环境变量等

错误原因说明

qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2'本质是架构不兼容:

  • Puppeteer默认下载的Chromium为x86_64版本,在ARM主机上运行时,qemu模拟x86环境缺少对应的64位C运行时库
  • node:18-buster基础镜像未包含完整的跨架构兼容组件,无法加载Chromium的底层依赖

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 10:22:42