从docker-container运行时,操纵up的page.authenticate和page.goto不起作用

时间:2019-08-01 09:05:05

标签: docker puppeteer

颠簸编辑:问题仅被查看了15次,没有答案,因此请在希望更活跃的时期再试一次。

我有一个使用puppeteer的快速应用程序,可以从网站的某些html生成pdf文件。我用于其的特定网站需要基本身份验证,因此我正在使用伪造者page.authenthenticate,例如:

// index.js
puppeteer
    .launch({ args: ['--no-sandbox'] })
    .then(t => (browser = t))
    .then(() => {
      browser.newPage().then(page => {
        page.authenticate(CREDENTIALS).then(() => {
          console.log('credentials check:', CREDENTIALS)
          page.goto(request.query.url).then(() => {
...

该应用程序通过命令“ node index.js”在本地运行和提供服务,该命令运行包含上述代码的文件。现在运行该程序,其中request.query.url指向需要身份验证的网站的URL,一切正常。

但是,如果我尝试像这样对应用程序进行Docker化:

// Dockerfile
FROM node:latest

RUN apt-get update && apt-get install -y \
gconf-service \ 
libasound2 \ 
libatk1.0-0 \ 
libatk-bridge2.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 mkdir -p /var/www/html
WORKDIR /var/www/html

COPY package.json /var/www/html/package.json

RUN npm install

CMD [ "npm", "start" ]

带有docker-compose文件

version: '3.3'

services:
  app:
    image: app-image
    build: 
      context: .
      dockerfile: Dockerfile
    container_name: app
    env_file:
      - .env
    expose:
     - "5000"
    volumes:
      - .:/var/www/html

身份验证停止工作。应该注意的是,在dockerized版本中,该应用程序是在虚拟主机(类似于“ app-name.localhost”)上提供的,而不是localhost:5000。

该应用仍会正确呈现不受保护的网页(例如google.com)的pdf,但是当我尝试加载受保护的网页(使用与以前相同的凭据)时,出现错误

UnhandledPromiseRejectionWarning: Error: Failed to navigate: app-url

at Page.goto (/var/www/html/node_modules/puppeteer/lib/Page.js:390:13)
at processTicksAndRejections 
(internal/process/task_queues.js:89:5)

我觉得这可能与某些未安装在容器中的ubuntu软件包有关,但是我几乎尝试了所有方法,但似乎没有任何效果。我安装的其他节点模块可能需要一些软件包,所以这是我的package.json

// package.json
{
  "name": "my-app",
  "version": "0.2.6",
  "private": true,
  "description": "Node.js app to generate pdfs for my app",
  "engines": {
    "node": "8.5.0"
  },
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "test": "node test.js"
  },
  "dependencies": {
    "ejs": "2.5.6",
    "express": "4.15.2",
    "puppeteer": "^0.11.0"
  },
  "devDependencies": {
    "request": "^2.81.0",
    "tape": "^4.7.0"
  }
}

0 个答案:

没有答案