Archived
fix(docker): synchronize dev dependency volume
This commit is contained in:
+20
-2
@@ -36,12 +36,22 @@ WORKDIR /workspace
|
||||
|
||||
COPY package.json package-lock.json ./
|
||||
COPY scripts/install-git-hooks.mjs scripts/install-git-hooks.mjs
|
||||
# Keep an immutable dependency seed outside /workspace, which is hidden by the
|
||||
# checkout bind mount at runtime. A cached generation is added after custom
|
||||
# image hooks so it identifies the final dependency tree.
|
||||
RUN npm ci \
|
||||
&& ln -sf /workspace/node_modules/.bin/pi /usr/local/bin/pi \
|
||||
&& install -d -m 0755 /opt/pi-web-dev-dependencies \
|
||||
&& cp package.json package-lock.json /opt/pi-web-dev-dependencies/ \
|
||||
&& chmod -R a+rwX /workspace/node_modules \
|
||||
&& mv /workspace/node_modules /opt/pi-web-dev-dependencies/node_modules \
|
||||
&& ln -s /opt/pi-web-dev-dependencies/node_modules /workspace/node_modules \
|
||||
&& ln -sf /opt/pi-web-dev-dependencies/node_modules/.bin/pi /usr/local/bin/pi \
|
||||
&& npm cache clean --force \
|
||||
&& chmod -R a+rwX /workspace/node_modules /data \
|
||||
&& chmod -R a+rwX /data \
|
||||
&& chmod 0777 /workspace
|
||||
|
||||
COPY --chmod=0755 docker/internal/dev/sync-node-modules /usr/local/sbin/pi-web-dev-sync-node-modules
|
||||
|
||||
COPY --from=docker-cli /usr/local/bin/docker /usr/local/bin/docker
|
||||
COPY --from=docker-cli /usr/local/libexec/docker/cli-plugins /usr/local/libexec/docker/cli-plugins
|
||||
COPY docker/internal/bin/hostexec /usr/local/bin/hostexec
|
||||
@@ -49,6 +59,8 @@ COPY docker/pi-web-docker /usr/local/bin/pi-web-docker
|
||||
RUN chmod 0755 /usr/local/bin/hostexec /usr/local/bin/pi-web-docker
|
||||
|
||||
COPY docker/custom-image.d/ /tmp/pi-web-custom-image.d/
|
||||
# Image hooks use the temporary /workspace/node_modules symlink. Leave an empty
|
||||
# directory afterward so Compose can mount and populate the dependency volume.
|
||||
RUN bash -euxo pipefail -c '\
|
||||
shopt -s nullglob; \
|
||||
for script in /tmp/pi-web-custom-image.d/*.sh; do \
|
||||
@@ -56,9 +68,15 @@ RUN bash -euxo pipefail -c '\
|
||||
bash "${script}"; \
|
||||
done; \
|
||||
rm -rf /tmp/pi-web-custom-image.d; \
|
||||
test -L /workspace/node_modules; \
|
||||
rm /workspace/node_modules; \
|
||||
install -d -m 0777 /workspace/node_modules; \
|
||||
zypper clean --all; \
|
||||
rm -rf /var/cache/zypp/* \
|
||||
'
|
||||
# Cache the generation with the completed seed. Changes to any preceding layer,
|
||||
# including custom image hooks, rerun this step and refresh the named volume.
|
||||
RUN node -e 'process.stdout.write(`${require("node:crypto").randomUUID()}\n`)' > /opt/pi-web-dev-dependencies/generation
|
||||
|
||||
EXPOSE 8504 8505
|
||||
|
||||
|
||||
Reference in New Issue
Block a user