From c1b82bed9b55c47caa8216ee172d278ce93130cd Mon Sep 17 00:00:00 2001 From: Min Idzelis Date: Tue, 24 Jun 2025 05:59:52 -0400 Subject: [PATCH] chore: speedup devcontainer start (#19406) --- .devcontainer/server/container-common.sh | 6 +++--- .devcontainer/server/container-compose-overrides.yml | 1 + .dockerignore | 4 ++++ Makefile | 5 ++++- server/Dockerfile | 11 ++++++++--- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/.devcontainer/server/container-common.sh b/.devcontainer/server/container-common.sh index 34dcb6beac..7dff4a0894 100755 --- a/.devcontainer/server/container-common.sh +++ b/.devcontainer/server/container-common.sh @@ -73,10 +73,10 @@ install_dependencies() { log "Installing dependencies" ( cd "${IMMICH_WORKSPACE}" || exit 1 - run_cmd make install-server - run_cmd make install-sdk + run_cmd make ci-server + run_cmd make ci-sdk run_cmd make build-sdk - run_cmd make install-web + run_cmd make ci-web ) log "" } diff --git a/.devcontainer/server/container-compose-overrides.yml b/.devcontainer/server/container-compose-overrides.yml index eb8e66a3d3..4e340ae5bd 100644 --- a/.devcontainer/server/container-compose-overrides.yml +++ b/.devcontainer/server/container-compose-overrides.yml @@ -3,6 +3,7 @@ services: build: target: dev-container-server env_file: !reset [] + hostname: immich-dev environment: - IMMICH_SERVER_URL=http://127.0.0.1:2283/ volumes: !override diff --git a/.dockerignore b/.dockerignore index e182865ae0..6e830bae35 100644 --- a/.dockerignore +++ b/.dockerignore @@ -6,7 +6,11 @@ design/ docker/ !docker/scripts docs/ +!docs/package.json +!docs/package-lock.json e2e/ +!e2e/package.json +!e2e/package-lock.json fastlane/ machine-learning/ misc/ diff --git a/Makefile b/Makefile index 1e7760ae68..a9e36caf8a 100644 --- a/Makefile +++ b/Makefile @@ -48,6 +48,8 @@ audit-%: npm --prefix $(subst sdk,open-api/typescript-sdk,$*) audit fix install-%: npm --prefix $(subst sdk,open-api/typescript-sdk,$*) i +ci-%: + npm --prefix $(subst sdk,open-api/typescript-sdk,$*) ci build-cli: build-sdk build-web: build-sdk build-%: install-% @@ -81,7 +83,8 @@ test-medium-dev: docker exec -it immich_server /bin/sh -c "npm run test:medium" build-all: $(foreach M,$(filter-out e2e .github,$(MODULES)),build-$M) ; -install-all: $(foreach M,$(MODULES),install-$M) ; +install-all: $(foreach M,$(filter-out .github,$(MODULES)),install-$M) ; +ci-all: $(foreach M,$(filter-out .github,$(MODULES)),ci-$M) ; check-all: $(foreach M,$(filter-out sdk cli docs .github,$(MODULES)),check-$M) ; lint-all: $(foreach M,$(filter-out sdk docs .github,$(MODULES)),lint-$M) ; format-all: $(foreach M,$(filter-out sdk,$(MODULES)),format-$M) ; diff --git a/server/Dockerfile b/server/Dockerfile index 21c2031227..236b8b08d5 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -18,6 +18,7 @@ ENTRYPOINT ["tini", "--", "/bin/sh"] FROM dev AS dev-container-server +RUN rm -rf /usr/src/app RUN apt-get update && \ apt-get install sudo inetutils-ping openjdk-11-jre-headless \ vim nano \ @@ -27,12 +28,16 @@ RUN usermod -aG sudo node RUN echo "node ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers RUN mkdir -p /workspaces/immich RUN chown node -R /workspaces +COPY --chown=node:node --chmod=777 ../.devcontainer/server/*.sh /immich-devcontainer/ + +USER node +COPY --chown=node:node .. /tmp/create-dep-cache/ +WORKDIR /tmp/create-dep-cache +RUN make ci-all && rm -rf /tmp/create-dep-cache -RUN mkdir /immich-devcontainer && chown node -R /immich-devcontainer -COPY --chmod=777 ../.devcontainer/server/*.sh /immich-devcontainer/ FROM dev-container-server AS dev-container-mobile - +USER root # Enable multiarch for arm64 if necessary RUN if [ "$(dpkg --print-architecture)" = "arm64" ]; then \ dpkg --add-architecture amd64 && \