|
# Alpine results in segfaults, will stick with slim for now...
|
|
FROM node:14-slim AS base
|
|
WORKDIR /app
|
|
RUN mkdir /var/autoplex && chown node:node -R /var/autoplex
|
|
|
|
RUN apt-get update
|
|
RUN apt-get full-upgrade -y
|
|
RUN apt-get install -y libasound2 iputils-ping curl gnupg1 apt-transport-https dirmngr
|
|
|
|
# Speedtest utilities
|
|
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61 && \
|
|
echo "deb https://ookla.bintray.com/debian generic main" | tee /etc/apt/sources.list.d/speedtest.list && \
|
|
apt-get update && \
|
|
apt-get install speedtest
|
|
|
|
RUN apt-get autoremove --purge -y
|
|
RUN rm -rf /var/lib/apt/lists/*
|
|
|
|
# An image containing necessary components for building
|
|
FROM base AS builder
|
|
COPY package.json yarn.lock tsconfig.json ./
|
|
RUN rm -rf node_modules && yarn install --frozen-lockfile
|
|
COPY src src
|
|
COPY patches patches
|
|
|
|
# An image to build the app
|
|
FROM builder AS build
|
|
RUN yarn run build
|
|
|
|
# An image containing the built app and production dependencies
|
|
FROM base AS prod
|
|
COPY --from=build /app/build ./build
|
|
COPY patches patches
|
|
COPY package.json yarn.lock ./
|
|
RUN rm -rf node_modules && yarn install --production --frozen-lockfile
|
|
CMD [ "yarn", "run", "start" ]
|