FROM node:lts-alpine AS dev # define /app as working directory WORKDIR /app # copy package.json and package-lock.json to /app COPY package.json /app COPY package-lock.json /app # install node dependencies RUN npm install COPY . /app # launch node server ENTRYPOINT npm run dev # production # we will not use npm in production as it wants to write on the container filesystem. this should be prohibited on production. however, we need to allow it while developing. FROM dev AS prod RUN npm install --production ENTRYPOINT node app.js