Minimal Node.js docker container
04 Oct 2017 • permalink
Bitnami recently releases a
prod version of their
much smaller size due to stripping a bunch of unncessary stuff for runtime.
If your app does not require compiling native modules, you can use it as is. No changes required.
However, if you do need to compile native modules, you can still use their
development image as builder and copy stuff over to
prod image after.
I try with one of my app and the final image size reduce from 333 MB down to just 56 MB 💪 !! All these without the sacrify of using alpine-based image.
Please note that this is the size reported by Amazon Cloud Registry so probably compressed size. I don’t build image locally often.
update: the uncompressed size of my app is 707MB before and 192 MB after.
FROM bitnami/node:8.6.0-r1 as builder RUN mkdir -p /usr/src/app/my-app WORKDIR /usr/src/app/my-app COPY package.json /usr/src/app/my-app RUN npm install --production --unsafe COPY . /usr/src/app/my-app FROM bitnami/node:8.6.0-r1-prod RUN mkdir -p /app/my-app WORKDIR /app/my-app COPY --from=builder /usr/src/app/my-app . EXPOSE 3000 CMD ["npm", "start"]