No nosso Dockerfile
temos:
FROM ghcr.io/puppeteer/puppeteer:latest AS pdf
WORKDIR /puppeteer
USER root
# Prerequisites
RUN apt-get update && apt-get install nginx -y
# Update
RUN npm update
RUN npm update -g
RUN npm install -g npm
# Dependencies
RUN npm install puppeteer
# Run
COPY ./pdf.js .
RUN chmod u+x pdf.js
RUN service nginx start && ./pdf.js
Isso aguarda o início do Nginx e, em seguida, executa um script Node.js (que rastreia algumas páginas no servidor web Nginx).
Os comandos estão corretos em # Update
? A ordem dos comandos é importante para que ele seja atualizado de maneira adequada e completa?
O Node.js/NPM parece atualizar, mas lança o seguinte aviso no console enquanto funciona (leva algum tempo):
#43 3.167 npm WARN EBADENGINE Unsupported engine {
#43 3.169 npm WARN EBADENGINE package: '[email protected]',
#43 3.170 npm WARN EBADENGINE required: { node: '^18.17.1 || >=20.10.0' },
#43 3.172 npm WARN EBADENGINE current: { node: 'v20.9.0', npm: '10.1.0' }
#43 3.174 npm WARN EBADENGINE }
Como podemos corrigir esse aviso sobre um mecanismo não suportado/versões incompatíveis? Ou seja, como podemos atualizar do Node v20.9.0
para v20.10.0
(ou mais recente)?
Docker recomenda especificamente que você use apt-get update
em suas melhores práticas . Deveríamos também atualizar o Node.js/NPM como acima? A atualização pode causar algum problema na instalação do Google Puppeteer ? IE porque essas versões posteriores não foram testadas puppeteer:latest
pelo Google.
Como você está baseando sua imagem na imagem do Puppeteer, você poderá usar a instalação do Puppeteer que já é fornecida nessa imagem. Isso garantiria que a configuração do Node.js fosse consistente com o que os desenvolvedores do Puppeteer esperam.
O Puppeteer está instalado
/home/pptruser
e deve ser usado pelopptruser
usuário. Você terá que alterar seu ponto de entrada para ser um script que inicianginx
(como root) e depois muda parapptruser
para executar seu script.