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
我在本地使用名为“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