Necesito ejecutar XVFB en un contenedor docker para hacer que un raspador web de titiritero funcione en modo headful. Aquí está mi Dockerfile:
FROM node:15.11.0 RUN mkdir /code WORKDIR /code ADD . /code/ RUN apt-get update RUN apt-get install -y xvfb RUN curl -LO https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb RUN apt-get install -y ./google-chrome-stable_current_amd64.deb RUN rm google-chrome-stable_current_amd64.deb RUN npm install COPY init.sh /usr/local/bin/ RUN chmod u+x /usr/local/bin/init.sh ENTRYPOINT ["init.sh"]Y aquí está el archivo init.sh:
#!/bin/bash xvfb-run node src/routines/infojobs/migrate-candidates.jsY así es como inicializo el navegador, usando titiritero (si se necesita el código completo, puedo enviarlo en los comentarios, simplemente no creo que sea la razón del error)
const browser = await puppeteer.launch({ headless: false, slowMo: 50, args: ['--no-sandbox', '--no-first-run', '--disable-gpu'], path: '/usr/bin/google-chrome' })Cuando lo ejecuto usando la ventana acoplable, funciona perfectamente durante algunos minutos, hasta que finalmente se detiene y deja este mensaje de error: (como si la pantalla xvfb simplemente dejara de funcionar)
/code/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:193 reject(new Error([ ^ Error: Failed to launch the browser process! Fontconfig warning: "/etc/fonts/fonts.conf", line 100: unknown element "blank" [1802:1802:0322/141535.901385:ERROR:browser_main_loop.cc(1386)] Unable to open X display. TROUBLESHOOTING: https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md at onClose (/code/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:193:20) at ChildProcess.<anonymous> (/code/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:184:79) at ChildProcess.emit (node:events:390:22) at Process.ChildProcess._handle.onexit (node:internal/child_process:290:12) make: *** [Makefile:11: run] Error 1