Para imagens de Node, eu recomendo também setar o usuário, por exemplo:
FROM node:21.7.3-slim AS builder
USER node
WORKDIR /app/api
E na cópia dos arquivos já atribuir a propriedade correta sobre eles:
COPY --chown=node:node --from=builder /app/api/bin /app/api/bin
COPY --chown=node:node --from=builder /app/api/node_modules /app/api/node_modules
COPY --chown=node:node package*.json /app/api/
Dessa forma, evitamos realizar as operações como root e caso esteja usando um devContainer
no VSCode, essa ação vai evitar vários problemas de permissão.
Edit: Outras dicas nesse assunto que podem ajudar: https://snyk.io/pt-BR/blog/10-best-practices-to-containerize-nodejs-web-applications-with-docker/