# base image # Node 20 matches the nodejs package shipped by Debian 13 (trixie). FROM node:20-trixie WORKDIR /app ENV PATH /app/node_modules/.bin:$PATH # install and cache app dependencies USER root RUN npm install -g serve COPY app/public /app/public COPY app/src /app/src COPY app/package.json app/package-lock.json app/tsconfig.json /app/ # "node" user will run the app after build. RUN chown -R node:node /app # Install dependencies as "node", this is to avoid changing ownership of many files. USER node RUN npm install # Run the production build CMD ["npm", "run", "start"]