diff options
Diffstat (limited to 'Dockerfile')
-rw-r--r-- | Dockerfile | 61 |
1 files changed, 17 insertions, 44 deletions
@@ -1,47 +1,20 @@ | |||
1 | # Copy and pasted from: | 1 | # A minimal Docker image with Node 8 and Puppeteer |
2 | # https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#running-puppeteer-in-docker | ||
3 | # | 2 | # |
4 | # The only change is locking it down to a specific version of Puppeteer in the | 3 | # Based upon: |
5 | # `npm install` line. | 4 | # https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#running-puppeteer-in-docker |
6 | 5 | ||
7 | FROM node:8-slim | 6 | FROM node:8-slim |
8 | 7 | ||
9 | # See https://crbug.com/795759 | 8 | RUN apt-get update \ |
10 | RUN apt-get update && apt-get install -yq libgconf-2-4 | 9 | # See https://crbug.com/795759 |
11 | 10 | && apt-get install -yq libgconf-2-4 \ | |
12 | # Install latest chrome dev package and fonts to support major charsets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others) | 11 | # Install latest chrome dev package, which installs the necessary libs to |
13 | # Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer | 12 | # make the bundled version of Chromium that Puppeteer installs work. |
14 | # installs, work. | 13 | && apt-get install -y wget --no-install-recommends \ |
15 | RUN apt-get update && apt-get install -y wget --no-install-recommends \ | 14 | && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ |
16 | && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ | 15 | && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ |
17 | && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ | 16 | && apt-get update \ |
18 | && apt-get update \ | 17 | && apt-get install -y google-chrome-unstable --no-install-recommends \ |
19 | && apt-get install -y google-chrome-unstable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst ttf-freefont \ | 18 | && rm -rf /var/lib/apt/lists/* \ |
20 | --no-install-recommends \ | 19 | # Finally, install Puppeteer under /node_modules so it's available system-wide |
21 | && rm -rf /var/lib/apt/lists/* \ | 20 | && npm i puppeteer@1.1.1 \ No newline at end of file |
22 | && apt-get purge --auto-remove -y curl \ | ||
23 | && rm -rf /src/*.deb | ||
24 | |||
25 | # It's a good idea to use dumb-init to help prevent zombie chrome processes. | ||
26 | ADD https://github.com/Yelp/dumb-init/releases/download/v1.2.0/dumb-init_1.2.0_amd64 /usr/local/bin/dumb-init | ||
27 | RUN chmod +x /usr/local/bin/dumb-init | ||
28 | |||
29 | # Uncomment to skip the chromium download when installing puppeteer. If you do, | ||
30 | # you'll need to launch puppeteer with: | ||
31 | # browser.launch({executablePath: 'google-chrome-unstable'}) | ||
32 | # ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true | ||
33 | |||
34 | # Install puppeteer so it's available in the container. | ||
35 | RUN npm i puppeteer@1.1.1 | ||
36 | |||
37 | # Add user so we don't need --no-sandbox. | ||
38 | RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \ | ||
39 | && mkdir -p /home/pptruser/Downloads \ | ||
40 | && chown -R pptruser:pptruser /home/pptruser \ | ||
41 | && chown -R pptruser:pptruser /node_modules | ||
42 | |||
43 | # Run everything after as non-privileged user. | ||
44 | USER pptruser | ||
45 | |||
46 | ENTRYPOINT ["dumb-init", "--"] | ||
47 | CMD ["google-chrome-unstable"] \ No newline at end of file | ||