mirror of
https://github.com/FoxxMD/context-mod.git
synced 2026-04-19 03:00:07 -04:00
* Change project location to /home/node to avoid root permissions when creating WORKDIR * Create default config directory with correct permissions in the event no volume is mounted * Set default db driver to better-sqlite3 since we control environment -- it has better performance and we know we can use a pre-built binary b/c of base docker image
50 lines
1.1 KiB
Docker
50 lines
1.1 KiB
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
|
|
|
|
ARG data_dir=/config
|
|
RUN mkdir -p $data_dir && \
|
|
chown -R node:node $data_dir && \
|
|
chmod 755 $data_dir
|
|
VOLUME $data_dir
|
|
ENV DATA_DIR=$data_dir
|
|
|
|
# https://github.com/nodejs/docker-node/issues/740
|
|
WORKDIR /home/node
|
|
|
|
FROM base as build
|
|
|
|
COPY --chown=node:node package*.json ./
|
|
COPY --chown=node:node tsconfig.json .
|
|
|
|
RUN npm install
|
|
|
|
ADD --chown=node:node . /home/node
|
|
|
|
RUN npm run build && rm -rf node_modules
|
|
|
|
FROM base as app
|
|
|
|
COPY --from=build --chown=node:node /home/node /home/node
|
|
|
|
RUN npm install --production
|
|
|
|
ENV NPM_CONFIG_LOGLEVEL debug
|
|
|
|
# can set database to use more performant better-sqlite3 since we control everything
|
|
ENV DB_DRIVER=better-sqlite3
|
|
|
|
ARG webPort=8085
|
|
ENV PORT=$webPort
|
|
EXPOSE $PORT
|
|
|
|
USER node
|
|
|
|
CMD [ "node", "src/index.js", "run" ]
|