error while loading shared libraries: libgobject-2.0.so.0

Estoy intentado ejecutar una aplicación que tiene como dependencia a Puppeteer y me da el siguiente error:
/app/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:241
reject(new Error([
^
Error: Failed to launch the browser process!
/app/node_modules/puppeteer/.local-chromium/linux-982053/chrome-linux/chrome: error while loading shared libraries: libgobject-2.0.so.0: cannot open shared object file: No such file or directory
TROUBLESHOOTING: puppeteer/troubleshooting.md at main · puppeteer/puppeteer · GitHub

ya he intentado instalar todo lo que Puppeteer necesita según el link de arriba, con el siguiente comando en el Dockerfile:

RUN apt install -y gconf-service libgbm-dev 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

Aun así, sigue dando el mismo error.

To use headless Chrome, you need a whole lot of dependencies. Are you deploying with a Dockerfile or just using a buildpack? If possible, share what you have.

Para usar Chrome en modo “headless”, necesitas muchas dependencias. ¿Estás implementando con un Dockerfile o simplemente utilizando un “buildpack”? Si es posible, comparte lo que tienes.

Aquí hay un Dockerfile de ejemplo para una aplicación Rails usando Puppeteer:

Las lineas importantes:

También necesitarás –no-sandbox.

Error: Failed to launch the browser process!
2023-04-19T15:10:18.313 app[91857299a7d4d8] ams [info] /app/.cache/puppeteer/chrome/linux-1095492/chrome-linux/chrome: error while loading shared libraries: libgobject-2.0.so.0: cannot open shared object file: No such file or directory

I’m having the same issue in my node project; do you have an example Dockerfile for that?

En mi aplicación original, desarrollado en un entorno windows, no utilizo Dockerfile. Es un proyecto en node.js y utilizo librerías como express, cors, dotenv, socket.io, etc para crear un servidor Api.

Cuando utilicé flyctl para subir mi aplicación a fly.io, se creó el archivo Dockerfile que es el siguiente:

FROM debian:bullseye as builder

ENV PATH=/usr/local/node/bin:$PATH
ARG NODE_VERSION=18.15.0

RUN apt-get update; apt install -y curl python-is-python3 pkg-config build-essential && \
    curl -sL https://github.com/nodenv/node-build/archive/master.tar.gz | tar xz -C /tmp/ && \
    /tmp/node-build-master/bin/node-build "${NODE_VERSION}" /usr/local/node && \
rm -rf /tmp/node-build-master

RUN mkdir /app
WORKDIR /app

COPY . .

RUN npm install


FROM debian:bullseye-slim

LABEL fly_launch_runtime="nodejs"

COPY --from=builder /usr/local/node /usr/local/node
COPY --from=builder /app /app

WORKDIR /app
ENV NODE_ENV production
ENV PATH /usr/local/node/bin:$PATH

CMD [ "npm", "run", "start" ]

Agregué las líneas importantes que mencionas, quedando de la siguiente manera:

FROM debian:bullseye as builder

ENV PATH=/usr/local/node/bin:$PATH
ARG NODE_VERSION=18.15.0

RUN apt-get update; apt install -y curl python-is-python3 pkg-config build-essential && \
    curl -sL https://github.com/nodenv/node-build/archive/master.tar.gz | tar xz -C /tmp/ && \
    /tmp/node-build-master/bin/node-build "${NODE_VERSION}" /usr/local/node && \
rm -rf /tmp/node-build-master


ENV PATH="/usr/local/node/bin:$PATH" \
    PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true"


RUN mkdir /app
WORKDIR /app

COPY . .

RUN npm install


FROM debian:bullseye-slim

RUN apt-get update && \
    apt-get install --no-install-recommends -y chromium chromium-sandbox libsqlite3-0 && \
    rm -rf /var/lib/apt/lists /var/cache/apt/archives

LABEL fly_launch_runtime="nodejs"

COPY --from=builder /usr/local/node /usr/local/node
COPY --from=builder /app /app

WORKDIR /app
ENV NODE_ENV production
ENV PATH /usr/local/node/bin:$PATH
ENV PUPPETEER_EXECUTABLE_PATH="/usr/bin/chromium"

CMD [ "npm", "run", "start" ]

Además tengo esto en la configuración de Puppeteer:

puppeteer: {
    headless: true,
    args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-dev-shm-usage',
        '--use-gl=egl'
    ]
}

pero ahora me da otro error:

[error] could not make HTTP request to instance: connection error: timed out
[info] [ 725.029984] Out of memory: Killed process 583 (chromium) total-vm:1187950416kB, anon-rss:61600kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:884kB oom_score_adj:300

Chrome necesita mucho RAM

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.