diff --git a/.devcontainer/server/container-start-backend.sh b/.devcontainer/server/container-start-backend.sh index f7ec5cbc92..6fc2b4092c 100755 --- a/.devcontainer/server/container-start-backend.sh +++ b/.devcontainer/server/container-start-backend.sh @@ -10,7 +10,7 @@ cd "${IMMICH_WORKSPACE}/server" || ( exit 1 ) -pnpm install +CI=1 pnpm install while true; do run_cmd pnpm exec nest start --debug "0.0.0.0:9230" --watch log "Nest API Server crashed with exit code $?. Respawning in 3s ..." diff --git a/e2e/pnpm-lock.yaml b/e2e/pnpm-lock.yaml index 8cbb3ff7c3..aec22f7094 100644 --- a/e2e/pnpm-lock.yaml +++ b/e2e/pnpm-lock.yaml @@ -384,11 +384,6 @@ packages: cpu: [arm64] os: [linux] - '@img/sharp-libvips-linux-arm64@1.1.0': - resolution: {integrity: sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==} - cpu: [arm64] - os: [linux] - '@img/sharp-libvips-linux-arm@1.0.5': resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==} cpu: [arm] @@ -404,11 +399,6 @@ packages: cpu: [x64] os: [linux] - '@img/sharp-libvips-linux-x64@1.1.0': - resolution: {integrity: sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==} - cpu: [x64] - os: [linux] - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==} cpu: [arm64] @@ -2514,9 +2504,6 @@ snapshots: '@img/sharp-libvips-linux-arm64@1.0.4': optional: true - '@img/sharp-libvips-linux-arm64@1.1.0': - optional: true - '@img/sharp-libvips-linux-arm@1.0.5': optional: true @@ -2526,9 +2513,6 @@ snapshots: '@img/sharp-libvips-linux-x64@1.0.4': optional: true - '@img/sharp-libvips-linux-x64@1.1.0': - optional: true - '@img/sharp-libvips-linuxmusl-arm64@1.0.4': optional: true @@ -4114,9 +4098,9 @@ snapshots: '@img/sharp-libvips-darwin-arm64': 1.0.4 '@img/sharp-libvips-darwin-x64': 1.0.4 '@img/sharp-libvips-linux-arm': 1.0.5 - '@img/sharp-libvips-linux-arm64': 1.1.0 + '@img/sharp-libvips-linux-arm64': 1.0.4 '@img/sharp-libvips-linux-s390x': 1.0.4 - '@img/sharp-libvips-linux-x64': 1.1.0 + '@img/sharp-libvips-linux-x64': 1.0.4 '@img/sharp-libvips-linuxmusl-arm64': 1.0.4 '@img/sharp-libvips-linuxmusl-x64': 1.0.4 '@img/sharp-linux-arm': 0.33.5 diff --git a/server/Dockerfile b/server/Dockerfile index dfbf5e516d..35b4a95bac 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -30,25 +30,18 @@ COPY --chown=node:node \ server/pnpm-lock.yaml \ pnpm-workspace.yaml \ ./ -RUN --mount=type=cache,id=pnpm,target=/buildcache,uid=1000,gid=1000 \ - pnpm fetch + +RUN pnpm fetch ENTRYPOINT ["tini", "--", "/bin/sh"] FROM dev AS dev-docker -WORKDIR /usr/src/app -VOLUME /usr/src/app/node_modules -# Run this without build-cache, so these are cached in image itself -# This will also build node-gyp binaries, like sharp/canvas -RUN --mount=type=cache,id=pnpm,target=/buildcache,uid=1000,gid=1000 \ - pnpm install --frozen-lockfile --offline +RUN pnpm install FROM dev AS dev-container-server USER root -# Remove app dir from dev container -RUN rm -rf /usr/src/app RUN apt-get update && \ apt-get install sudo inetutils-ping openjdk-11-jre-headless \ @@ -68,7 +61,6 @@ COPY --chmod=777 \ ../.devcontainer/server/*.sh \ /immich-devcontainer/ -WORKDIR /tmp/build COPY --chown=node:node \ package.json \ pnpm-lock.yaml \ @@ -92,9 +84,11 @@ COPY --chown=node:node open-api/typescript-sdk/package.json \ ./open-api/typescript-sdk/ # This will cache all dependencies -RUN pnpm store prune && pnpm fetch +RUN sudo rm -rf /buildcache && mkdir -p /buildcache/pnpm_store +RUN pnpm install --frozen-lockfile WORKDIR /workspaces/immich -RUN rm -rf /tmp/build +# Remove app dir from dev container +RUN sudo rm -rf /usr/src/app FROM dev-container-server AS dev-container-mobile USER root @@ -138,15 +132,13 @@ USER root RUN chown node:node /usr/src/app USER node COPY --chown=node:node server . -RUN --mount=type=cache,id=pnpm,target=/buildcache,uid=1000,gid=1000 \ - pnpm install --frozen-lockfile --offline && \ +RUN pnpm install --frozen-lockfile --offline && \ pnpm build FROM dev AS sdk COPY --chown=node:node open-api/typescript-sdk/ . -RUN --mount=type=cache,id=pnpm,target=/buildcache,uid=1000,gid=1000 \ - pnpm install --frozen-lockfile --no-optional && \ +RUN pnpm install --frozen-lockfile --no-optional && \ pnpm build # web production build @@ -155,8 +147,7 @@ FROM dev AS web COPY --chown=node:node web . COPY --from=sdk /usr/src/app /usr/src/open-api/typescript-sdk COPY --chown=node:node i18n /usr/src/i18n -RUN --mount=type=cache,id=pnpm,target=/buildcache,uid=1000,gid=1000 \ - pnpm install --frozen-lockfile && \ +RUN pnpm install --frozen-lockfile && \ pnpm build FROM dev AS cli @@ -165,8 +156,7 @@ COPY --chown=node:node cli . COPY --from=sdk /usr/src/app /usr/src/open-api/typescript-sdk # the following command does not use --offline, because the cache created in # the 'dev' stage did not includ the cli depenencies -RUN --mount=type=cache,id=pnpm,target=/buildcache,uid=1000,gid=1000 \ - pnpm install --frozen-lockfile && \ +RUN pnpm install --frozen-lockfile && \ pnpm build # prod build @@ -190,6 +180,7 @@ RUN mkdir -p /buildcache/pnpm_store && \ chown -R node:node /usr/src/app && \ chmod 755 /usr/src/app +COPY --chown=node:node --from=prod /buildcache /buildcache COPY --chown=node:node --from=prod /usr/src/app/dist ./dist COPY --chown=node:node --from=prod /usr/src/app/bin ./bin COPY --chown=node:node --from=web /usr/src/app/build /build/www @@ -201,11 +192,13 @@ COPY LICENSE /licenses/LICENSE.txt COPY LICENSE /LICENSE USER node -RUN --mount=type=cache,id=pnpm,target=/buildcache,uid=1000,gid=1000 \ - pnpm install --frozen-lockfile --offline --prod --no-optional && \ +RUN pnpm install --frozen-lockfile --prod --no-optional && \ echo '#!/usr/bin/env node' > /usr/src/app/bin/immich && \ echo 'require("../cli/index.js");' >> /usr/src/app/bin/immich && \ - chmod +x /usr/src/app/bin/immich + chmod +x /usr/src/app/bin/immich +USER root +RUN rm -rf /buildcache /usr/local/etc/npmrc +USER node ENV PATH="${PATH}:/usr/src/app/bin" diff --git a/web/Dockerfile b/web/Dockerfile index f76780cef5..33b92c5416 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -23,8 +23,7 @@ COPY --chown=node:node \ pnpm-workspace.yaml \ ./ -RUN --mount=type=cache,id=pnpm,target=/buildcache,uid=1000,gid=1000 \ - pnpm install --frozen-lockfile +RUN pnpm install --frozen-lockfile ENV CHOKIDAR_USEPOLLING=true