This commit relies on the possibility to customize the LevelDB directory introduced in https://github.com/inventaire/inventaire/commit/4fb86f6
43 lines
1.7 KiB
Docker
43 lines
1.7 KiB
Docker
FROM node:20-slim
|
|
|
|
RUN apt-get update \
|
|
&& apt-get install -y curl git graphicsmagick inotify-tools jq \
|
|
&& apt-get clean && rm -rf /var/lib/apt/lists/* \
|
|
&& mkdir -p /opt/inventaire /opt/inventaire_leveldb /opt/inventaire_local_media_storage /opt/inventaire_backups \
|
|
&& chown -R 1000:1000 /opt
|
|
|
|
# Default to the same user as the host (override from command line if needed)
|
|
# Known benefits:
|
|
# - allows to handle leveldb with level-party from both the host and container at the same time
|
|
USER 1000:1000
|
|
|
|
WORKDIR /opt/inventaire
|
|
|
|
ARG GIT_REF=main
|
|
ENV DOCKER=1
|
|
|
|
# - Create the client folder to prevent the server postinstall to run `npm run install-client` as it does it with the wrong workdir and env
|
|
# - Create the public/sitemaps folder to prevent the client postinstall to run `npm run generate-sitemaps` (which needs to be updated to support non-inventaire.io instances)
|
|
RUN git clone https://git.inventaire.io/inventaire --depth 1 --branch "${GIT_REF}" . \
|
|
&& mkdir -p /opt/inventaire/client \
|
|
&& npm ci --omit=dev \
|
|
&& npm run build \
|
|
&& git clone https://git.inventaire.io/inventaire-client ./client --branch docker --depth 1 --branch "${GIT_REF}" \
|
|
&& mkdir -p /opt/inventaire/client/public/sitemaps
|
|
|
|
WORKDIR /opt/inventaire/client
|
|
|
|
# Include dev dependencies (webpack, svelte-checks) at first to be able to build during the postinstall script
|
|
RUN npm ci --include=dev \
|
|
&& rm -rf node_modules \
|
|
&& npm ci --omit=dev --ignore-scripts \
|
|
&& npm cache clean --force
|
|
|
|
COPY docker-entrypoint.sh /opt/docker-entrypoint.sh
|
|
|
|
WORKDIR /opt/inventaire
|
|
|
|
# Avoid using npm script to start the server
|
|
# See https://adambrodziak.pl/dockerfile-good-practices-for-node-and-npm#heading-use-node-not-npm-to-start-the-server
|
|
ENTRYPOINT [ "/opt/docker-entrypoint.sh" ]
|