FROM node:12-alpine # Installs latest Chromium (63) package. RUN apk update && apk upgrade && \ echo @edge http://nl.alpinelinux.org/alpine/edge/community >> /etc/apk/repositories && \ echo @edge http://nl.alpinelinux.org/alpine/edge/main >> /etc/apk/repositories && \ apk add --no-cache \ chromium@edge \ nss@edge \ freetype@edge \ freetype-dev@edge \ harfbuzz@edge \ ca-certificates@edge \ ttf-freefont@edge # Tell Puppeteer to skip installing Chrome. We'll be using the installed package. ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \ PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser RUN npm install puppeteer COPY . /app/ # Add user so we don't need --no-sandbox. RUN addgroup -S pptruser && adduser -S -g pptruser pptruser \ && mkdir -p /home/pptruser/Downloads /app \ && chown -R pptruser:pptruser /home/pptruser \ && chown -R pptruser:pptruser /app # Run everything after as non-privileged user. USER pptruser CMD ["node", "/app/examples/example-docker.js"]