Puppeteer无法在Docker容器中启动Chromium

bjg7j2ky  于 2023-03-29  发布在  Docker
关注(0)|答案(1)|浏览(296)

这是我的dockerfile代码:

FROM node:18-alpine As base

ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true

RUN apk update && apk add curl gnupg \
    && curl --location --silent https://dl-ssl.google.com/linux/linux_signing_key.pub | apk add - \
    && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apk/sources.list.d/google.list' \
    && apk update \
    && apk add google-chrome-stable --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/main \
    && rm -rf /var/cache/apk/*

USER node
WORKDIR /app

COPY --chown=node:node package*.json .

RUN npm ci

COPY --chown=node:node . .

我的后端运行在Docker容器中,并使用Nest Js构建。我想在转换HTML内容后保存PDF文件。我使用Puppeteer库,为了让我的转换工作,我需要运行Chromium(无论它是否是无头的)。
当我们运行命令“npm i puppeteer”时,我以为我不需要安装Chrome。它在开发期间工作,但由于某种原因,它在Docker容器中不工作。
我不确定我的Docker文件中的代码是否可以安装Chrome。我在网上找到了这段代码并将其粘贴到我的Docker文件中,但它显示错误

对此有什么解决办法吗?

mrfwxfqh

mrfwxfqh1#

我相信你正在使用一个过时的命令,试试:

RUN apt-get update && apt-get install gnupg wget -y && \
  wget --quiet --output-document=- https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor > /etc/apt/trusted.gpg.d/google-archive.gpg && \
  sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' && \
  apt-get update && \
  apt-get install google-chrome-stable -y --no-install-recommends && \
  rm -rf /var/lib/apt/lists/*

完全只是一个直觉,但我假设你正在使用这个教程:https://dev.to/cloudx/how-to-use-puppeteer-inside-a-docker-container-568c
但看起来你用的是老办法。

相关问题