xref: /aosp_15_r20/external/skia/infra/lottiecap/docker/lottie-web-puppeteer/Dockerfile (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1*c8dee2aaSAndroid Build Coastguard Worker# Docker container with Google Chrome and puppeteer.
2*c8dee2aaSAndroid Build Coastguard Worker#
3*c8dee2aaSAndroid Build Coastguard Worker# Tests will be run as non-root (user skia, in fact), so /OUT should have permissions
4*c8dee2aaSAndroid Build Coastguard Worker# 777 so as to be able to create output there.
5*c8dee2aaSAndroid Build Coastguard Worker
6*c8dee2aaSAndroid Build Coastguard WorkerFROM node:8.11
7*c8dee2aaSAndroid Build Coastguard Worker
8*c8dee2aaSAndroid Build Coastguard WorkerRUN apt-get update && apt-get upgrade -y
9*c8dee2aaSAndroid Build Coastguard Worker
10*c8dee2aaSAndroid Build Coastguard WorkerRUN wget https://github.com/Yelp/dumb-init/releases/download/v1.2.2/dumb-init_1.2.2_amd64.deb
11*c8dee2aaSAndroid Build Coastguard WorkerRUN dpkg -i dumb-init_*.deb
12*c8dee2aaSAndroid Build Coastguard Worker
13*c8dee2aaSAndroid Build Coastguard Worker# https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#running-puppeteer-in-docker
14*c8dee2aaSAndroid Build Coastguard Worker# recommends using dumb-init to "prevent zombie chrome processes"
15*c8dee2aaSAndroid Build Coastguard WorkerENTRYPOINT ["/usr/bin/dumb-init", "--"]
16*c8dee2aaSAndroid Build Coastguard Worker
17*c8dee2aaSAndroid Build Coastguard WorkerRUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add -
18*c8dee2aaSAndroid Build Coastguard WorkerRUN sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
19*c8dee2aaSAndroid Build Coastguard WorkerRUN apt-get update && apt-get install -y google-chrome-stable
20*c8dee2aaSAndroid Build Coastguard Worker
21*c8dee2aaSAndroid Build Coastguard WorkerENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
22*c8dee2aaSAndroid Build Coastguard Worker
23*c8dee2aaSAndroid Build Coastguard WorkerRUN npm install --global \
24*c8dee2aaSAndroid Build Coastguard Worker    [email protected] \
25*c8dee2aaSAndroid Build Coastguard Worker    [email protected] \
26*c8dee2aaSAndroid Build Coastguard Worker    [email protected] \
27*c8dee2aaSAndroid Build Coastguard Worker    [email protected] \
28*c8dee2aaSAndroid Build Coastguard Worker    [email protected]
29*c8dee2aaSAndroid Build Coastguard Worker
30*c8dee2aaSAndroid Build Coastguard Worker# Allows require('puppeteer') to work from anywhere.
31*c8dee2aaSAndroid Build Coastguard Worker# https://stackoverflow.com/a/15646750
32*c8dee2aaSAndroid Build Coastguard WorkerENV NODE_PATH=/usr/local/lib/node_modules
33*c8dee2aaSAndroid Build Coastguard Worker
34*c8dee2aaSAndroid Build Coastguard Worker#Add user so we don't have to run as root (prevents us from over-writing files in /SRC)
35*c8dee2aaSAndroid Build Coastguard WorkerRUN groupadd -g 2000 skia \
36*c8dee2aaSAndroid Build Coastguard Worker    && useradd -u 2000 -g 2000 skia \
37*c8dee2aaSAndroid Build Coastguard Worker    && mkdir -p /home/skia \
38*c8dee2aaSAndroid Build Coastguard Worker    && chown -R skia:skia /home/skia
39*c8dee2aaSAndroid Build Coastguard Worker
40*c8dee2aaSAndroid Build Coastguard Worker# These directories can be used for mounting a source checkout and having a place to put outputs.
41*c8dee2aaSAndroid Build Coastguard WorkerRUN mkdir -m 0777 /SRC /OUT
42*c8dee2aaSAndroid Build Coastguard Worker
43*c8dee2aaSAndroid Build Coastguard Worker# Run everything after as non-privileged user.
44*c8dee2aaSAndroid Build Coastguard WorkerUSER skia
45*c8dee2aaSAndroid Build Coastguard Worker
46*c8dee2aaSAndroid Build Coastguard WorkerWORKDIR /home/skia