meteor-up: Using headless Chrome Puppeteer with meteor and mup (Error)

Mup version (mup --version): 1.4.5

So I am running into an error with my deployed Meteor app:

/built_app/programs/server/npm/node_modules/puppeteer/.local-chromium/linux-571375/chrome-linux/chrome: error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory

I am 90% sure, that this is just due to some missing libs inside the abernix/meteord:node-8-base docker container? Any ideas on this?

Do I have to make my own docker container with some more libs installed? (see here: https://github.com/GoogleChrome/puppeteer/issues/404 - apt-get install libpangocairo-1.0-0 libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxi6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libgconf2-4 libasound2 libatk1.0-0 libgtk-3-0).

Or is there some way around this?

About this issue

  • Original URL
  • State: open
  • Created 6 years ago
  • Comments: 18 (2 by maintainers)

Most upvoted comments

Thanks @nabiltntn for the feedback. I was able to get it working by cloning the https://github.com/abernix/meteord repo and made changes to the ‘base’ Dockerfile and built it. I can confirm that it works with my Meteor 1.9 project.

I modified the Dockerfile to this:

FROM debian:stretch
MAINTAINER Jesse Rosenberger

ENV METEORD_DIR /opt/meteord
COPY scripts $METEORD_DIR

ARG NODE_VERSION
ENV NODE_VERSION ${NODE_VERSION:-12.14.0}
ONBUILD ENV NODE_VERSION ${NODE_VERSION:-12.14.0}

RUN bash $METEORD_DIR/lib/install_base.sh
RUN bash $METEORD_DIR/lib/install_node.sh
RUN bash $METEORD_DIR/lib/install_phantomjs.sh
RUN bash $METEORD_DIR/lib/cleanup.sh

EXPOSE 80/tcp
RUN chmod +x $METEORD_DIR/run_app.sh
ENTRYPOINT exec $METEORD_DIR/run_app.sh

ENV NODE_VERSION=12.14.0

RUN apt-get update \
    && apt-get install -y \
    libpangocairo-1.0-0 \
    libx11-xcb1 \
    libxcomposite1 \
    libxcursor1 \
    libxdamage1 \
    libxi6 \
    libxtst6 \
    libnss3 \
    libcups2 \
    libxss1 \
    libxrandr2 \
    libgconf2-4 \
    libasound2 \
    libatk1.0-0 \
    libgtk-3-0 \
    wget \
    --no-install-recommends \
    && rm -rf /var/lib/apt/lists/* \
    && rm -rf /src/*.deb
    
RUN wget -O /usr/local/bin/dumb-init https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_amd64

RUN chmod +x /usr/local/bin/dumb-init

ENTRYPOINT /usr/local/bin/dumb-init -- $METEORD_DIR/run_app.sh

Awesome work @johannel00. Can you make this available on DockerHub?

It’s available here. Let me know if it works for you. https://hub.docker.com/repository/docker/fedescoinc/meteord-node-with-chromium_dumb-init/tags

Hi @nabiltntn, thank you for your the previous docker images that you’ve provided. I recently upgraded my Meteor project to 1.9. Can you help or explain/direct to me how I can create a custom docker image based on meteord with 12.14.0 node version.

Hi @nabiltntn, thank you very much for your docker images with Chromium!

I’ve used them to automate production of pre-rendered landing pages with in-line critical css. See my post in the Meteor forums: https://forums.meteor.com/t/pre-rendered-landing-pages-with-critical-css/50626

Using Meteor 1.8.1

Hi @IDCOLL , I have build 2 custom docker images based on meteord with 8.11.2 node version https://hub.docker.com/r/nabiltntn/meteord-node-with-chromium/tags

8.11.2_dumb-init starts the application with dumb-init to avoid having plenty of zombies process after browser execution.