forked from balena-io-experimental/browser
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Dockerfile.template
60 lines (50 loc) · 1.66 KB
/
Dockerfile.template
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
FROM balenalib/%%BALENA_ARCH%%-node:18 As development
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm ci
FROM balenalib/%%BALENA_ARCH%%-node:18 As build
WORKDIR /usr/src/app
COPY --from=development /usr/src/app/node_modules ./node_modules
COPY . .
RUN npm run build
ENV NODE_ENV production
RUN npm ci --omit=dev && npm cache clean --force
FROM balenalib/%%BALENA_ARCH%%-alpine-node:18 As production
ENV NODE_ENV production
COPY --from=build /usr/src/app/node_modules ./node_modules
COPY --from=build /usr/src/app/dist ./dist
COPY osScripts/* /dist/
RUN install_packages \
chromium \
mesa-gles \
lsb-release \
mesa-vdpau-gallium \
scrot \
libx11 \
xorg-server \
xf86-input-evdev \
xinit \
xinput
RUN chmod +x /dist/*.sh
ENV UDEV=1
RUN mkdir -p /etc/chromium/policies
RUN mkdir -p /etc/chromium/policies/recommended
COPY ./policy.json /etc/chromium/policies/recommended/my_policy.json
# Add chromium user
RUN adduser -D -G root -s /bin/bash chromium
RUN addgroup -S chromium
RUN id -u chromium
RUN chown -R chromium:chromium /home/chromium
COPY ./public-html /home/chromium
# udev rule to set specific permissions
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
RUN echo 'SUBSYSTEM=="vchiq",GROUP="video",MODE="0660"' > /etc/udev/rules.d/10-vchiq-permissions.rules
RUN adduser chromium audio
RUN adduser chromium video
RUN adduser chromium tty
# Set up the audio block. This won't have any effect if the audio block is not being used.
RUN curl -skL https://raw.githubusercontent.com/balena-labs-projects/audio/master/scripts/alsa-bridge/alpine-setup.sh| sh
ENV PULSE_SERVER=tcp:audio:4317
COPY VERSION .
# Start app
CMD ["bash", "/dist/start.sh"]