I ended up adding a nodejs stage which installs the dependancies first.
Like this:
ARG NODE_BUILDER_IMAGE="node:18.17.1-alpine"
########################################
# 1. Build nodejs frontend
########################################
FROM ${NODE_BUILDER_IMAGE} as node-builder
# prepare build dir
RUN mkdir -p /app/assets
WORKDIR /app
# set build ENV
ENV NODE_ENV=prod
# install npm dependencies
COPY assets/package.json assets/package-lock.json ./assets/
RUN cd assets && npm ci
# build assets
COPY assets assets
And on the builder stage, instead of copying the assets from the host, I copy them from the node builder:
# COPY assets assets
COPY --from=node-builder --chown=nobody:root /app/assets ./assets
This seems to work (at least for my current project/setup).
I also feel that this perhaps should be a part of the generator? Like if it detects a package.json in the assets folder it adds an install step to the Dockerfile.






















