Docker + 生产中的木偶师

Docker + puppeteer in production

我在本地使用名为“node-html-to-image”的库,当我使用 docker 我总是对 docker:

有问题

Error: Unable to launch browser, error message: Failed to launch the browser process! spawn /app/node_modules/puppeteer/.local-chromium/linux-901912/chrome-linux/chrome ENOENT

我遇到这个错误已经尝试遵循 link 中 'puppeteer' 的库的几个提示:

疑难解答:https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md

我传递给木偶操纵者的参数是:

puppeteerArgs: {
          headless: true,
          args: [
            '--no-sandbox',
            '--disable-setuid-sandbox',
            '--disable-dev-shm-usage'
          ]
       }

我的 DockerFile:

FROM node:14.15.1-alpine3.12 as build

RUN apk update
RUN apk add --no-cache alpine-sdk

WORKDIR /app

ENV NODE_ENV=local

COPY package.json ./

RUN npm install --silent -g typescript

RUN npm install

COPY src src
COPY tsconfig.json tsconfig.json
COPY tsconfig.prod.json tsconfig.prod.json
COPY build.ts build.ts
COPY .env .env

RUN npm run build


FROM node:14.15.1-alpine3.12 as app

WORKDIR /app

RUN chown nobody:nobody /app

USER nobody:nobody

RUN ls -la

COPY --from=build --chown=nobody:nobody /app/dist ./

COPY --from=build --chown=nobody:nobody /app/node_modules ./node_modules

RUN ls -la

COPY package.json ./

ENV HOME=/app
ENV NODE_ENV=production


CMD node src/server.js

您的 docker 容器没有浏览器,它不会启动安装在 docker 主机上的浏览器。您可能喜欢 docker 容器中对 运行 chrome 的下一个解释:

https://medium.com/dot-debug/running-chrome-in-a-docker-container-a55e7f4da4a8

我是这样弄的,我总是要运行npm install然后删除node_modules文件夹,运行npm install再安装Chromium 依赖库

在我的 Dockerfile 下方:

FROM node:14.18 as build

WORKDIR /app

ENV PORT=4000

COPY . .

RUN npm install
RUN rm -rf node_modules
RUN npm install
RUN apt-get update
RUN apt-get --yes install gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget

RUN npm run build

COPY . .

CMD node ./dist/src/server.js