mirror of
https://github.com/FoxxMD/context-mod.git
synced 2026-01-12 23:28:08 -05:00
* use --no-cache so repository index isn't included in image * use FROM instructions to build project with dev dependencies, then copy built project to new stage and install production-only libraries * properly ignore docs and node_modules with dockerignore
42 lines
756 B
Docker
42 lines
756 B
Docker
FROM node:16-alpine3.14 as base
|
|
|
|
ENV TZ=Etc/GMT
|
|
|
|
# vips required to run sharp library for image comparison
|
|
RUN echo "http://dl-4.alpinelinux.org/alpine/v3.14/community" >> /etc/apk/repositories \
|
|
&& apk --no-cache add vips
|
|
|
|
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
|
|
|
WORKDIR /usr/app
|
|
|
|
FROM base as build
|
|
|
|
COPY package*.json ./
|
|
COPY tsconfig.json .
|
|
|
|
RUN npm install
|
|
|
|
ADD . /usr/app
|
|
|
|
RUN npm run build && rm -rf node_modules
|
|
|
|
FROM base as app
|
|
|
|
COPY --from=build /usr/app /usr/app
|
|
|
|
RUN npm install --production
|
|
|
|
ENV NPM_CONFIG_LOGLEVEL debug
|
|
|
|
ARG log_dir=/home/node/logs
|
|
RUN mkdir -p $log_dir
|
|
VOLUME $log_dir
|
|
ENV LOG_DIR=$log_dir
|
|
|
|
ARG webPort=8085
|
|
ENV PORT=$webPort
|
|
EXPOSE $PORT
|
|
|
|
CMD [ "node", "src/index.js", "run" ]
|