mirror of
https://github.com/FoxxMD/multi-scrobbler.git
synced 2026-04-28 03:39:54 +00:00
71 lines
1.6 KiB
Docker
71 lines
1.6 KiB
Docker
FROM lsiobase/alpine:3.18 as base
|
|
|
|
ENV TZ=Etc/GMT
|
|
|
|
RUN \
|
|
echo "**** install build packages ****" && \
|
|
apk add --no-cache \
|
|
avahi \
|
|
avahi-tools \
|
|
nodejs \
|
|
npm \
|
|
&& \
|
|
echo "**** cleanup ****" && \
|
|
rm -rf \
|
|
/root/.cache \
|
|
/tmp/*
|
|
|
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|
|
|
ARG data_dir=/config
|
|
VOLUME $data_dir
|
|
ENV CONFIG_DIR=$data_dir
|
|
|
|
COPY docker/root/ /
|
|
|
|
WORKDIR /app
|
|
|
|
FROM base as build
|
|
|
|
# copy dep/TS config and install dev dependencies
|
|
COPY --chown=abc:abc package*.json tsconfig.json ./
|
|
COPY --chown=abc:abc patches ./patches
|
|
|
|
RUN npm ci \
|
|
&& chown -R root:root node_modules
|
|
#RUN yarn install
|
|
|
|
COPY --chown=abc:abc . /app
|
|
|
|
# need to set before build so server/client build is optimized and has constants (if needed)
|
|
ENV NODE_ENV=production
|
|
|
|
RUN npm run docs:install && npm run build && rm -rf node_modules && rm -rf docsite/node_modules
|
|
|
|
FROM base as app
|
|
|
|
#COPY --chown=abc:abc package.json yarn.lock ./
|
|
COPY --chown=abc:abc package*.json ./
|
|
COPY --chown=abc:abc patches ./patches
|
|
COPY --from=build --chown=abc:abc /app/dist /app/dist
|
|
COPY --from=build --chown=abc:abc /app/src /app/src
|
|
COPY --from=build --chown=abc:abc /app/docsite /app/docsite
|
|
COPY --from=base /usr/local/bin /usr/local/bin
|
|
COPY --from=base /usr/local/lib /usr/local/lib
|
|
|
|
ENV NODE_ENV=production
|
|
ENV IS_DOCKER=true
|
|
ENV COLORED_STD=true
|
|
|
|
# https://stackoverflow.com/a/63640896/1469797
|
|
ARG APP_BUILD_VERSION
|
|
ENV APP_VERSION=$APP_BUILD_VERSION
|
|
|
|
RUN npm ci --omit=dev \
|
|
&& npm cache clean --force \
|
|
&& chown -R abc:abc node_modules \
|
|
&& rm -rf node_modules/@types
|
|
|
|
ARG webPort=9078
|
|
ENV PORT=$webPort
|
|
EXPOSE $PORT
|