chore(server): avoid copying sources in dev

Add a dev target to the web and server Dockerfiles, and change docker-compose.dev.yml to use the dev target. The dev target avoids copying files so that the docker image is smaller.
This commit is contained in:
Yonathan Randolph 2024-09-19 08:55:21 -07:00
parent 0b02fda4e0
commit 2d6d043336
3 changed files with 6 additions and 3 deletions

View File

@ -55,6 +55,7 @@ services:
image: immich-web-dev:latest
build:
context: ../web
target: dev
command: ['/usr/src/app/bin/immich-web']
env_file:
- .env

View File

@ -9,7 +9,6 @@ RUN npm ci && \
# they're marked as optional dependencies, so we need to copy them manually after pruning
rm -rf node_modules/@img/sharp-libvips* && \
rm -rf node_modules/@img/sharp-linuxmusl-x64
COPY server .
ENV PATH="${PATH}:/usr/src/app/bin" \
IMMICH_ENV=development \
NVIDIA_DRIVER_CAPABILITIES=all \
@ -19,6 +18,7 @@ ENTRYPOINT ["tini", "--", "/bin/sh"]
FROM dev AS prod
COPY server .
RUN npm run build
RUN npm prune --omit=dev --omit=optional
COPY --from=dev /usr/src/app/node_modules/@img ./node_modules/@img

View File

@ -1,12 +1,14 @@
FROM node:20.17.0-alpine3.20@sha256:2d07db07a2df6830718ae2a47db6fedce6745f5bcd174c398f2acdda90a11c03
FROM node:20.17.0-alpine3.20@sha256:2d07db07a2df6830718ae2a47db6fedce6745f5bcd174c398f2acdda90a11c03 AS dev
RUN apk add --no-cache tini
USER node
WORKDIR /usr/src/app
COPY --chown=node:node package*.json ./
RUN npm ci
COPY --chown=node:node . .
ENV CHOKIDAR_USEPOLLING=true
EXPOSE 24678
EXPOSE 3000
ENTRYPOINT ["/sbin/tini", "--", "/bin/sh"]
FROM dev
COPY --chown=node:node . .