Last active
January 18, 2020 13:55
-
-
Save chuongtrh/c5cc7d239a1fc54c7dadcf77541a6eb9 to your computer and use it in GitHub Desktop.
Run puppeteer on docker with node:8.9-alpine
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM node:8.9-alpine | |
RUN apk update && apk upgrade && \ | |
echo http://nl.alpinelinux.org/alpine/latest-stable/community >> /etc/apk/repositories && \ | |
echo http://nl.alpinelinux.org/alpine/latest-stable/main >> /etc/apk/repositories && \ | |
apk add --no-cache \ | |
zlib-dev \ | |
xvfb \ | |
xorg-server \ | |
dbus \ | |
ttf-freefont \ | |
chromium \ | |
nss \ | |
ca-certificates \ | |
dumb-init | |
# Tell Puppeteer to skip installing Chrome. We'll be using the installed package. | |
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true | |
# Help prevent zombie chrome processes | |
ADD https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 /usr/local/bin/dumb-init | |
RUN chmod +x /usr/local/bin/dumb-init | |
# Create app directory | |
WORKDIR /usr/src/app | |
# Install app dependencies | |
# COPY package.json . | |
# For npm@5 or later, copy package-lock.json as well | |
COPY package.json package-lock.json ./ | |
RUN npm install --production | |
# Bundle app source | |
COPY . . | |
# Set Environment | |
ENV NODE_ENV=dev | |
# Puppeteer v1.4.0 works with Chromium 68. | |
RUN npm install puppeteer@1.4.0 | |
# Add user so we don't need --no-sandbox. | |
RUN addgroup -S pptruser && adduser -S -g pptruser pptruser \ | |
&& mkdir -p /home/pptruser/Downloads \ | |
&& chown -R pptruser:pptruser /home/pptruser \ | |
&& chown -R pptruser:pptruser /usr/src/app | |
# Run everything after as non-privileged user. | |
USER pptruser | |
EXPOSE 4200 | |
ENTRYPOINT ["dumb-init", "--"] | |
CMD [ "npm", "start" ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment