@@ -24,7 +24,7 @@ Always pin exact versions of base images and dependencies to ensure reproducible
2424
2525``` dockerfile
2626# ✅ GOOD - Pinned exact version
27- ARG NODE_VERSION=24.11.1 -alpine
27+ ARG NODE_VERSION=24.14.0 -alpine
2828ARG NGINX_VERSION=1.27.3-alpine3.22
2929FROM node:${NODE_VERSION} AS builder
3030FROM nginxinc/nginx-unprivileged:${NGINX_VERSION} AS runner
@@ -52,7 +52,7 @@ Prefer Alpine Linux or Debian Slim variants for smaller image sizes and reduced
5252
5353``` dockerfile
5454# ✅ GOOD - Alpine variant (smallest, ~5MB base)
55- FROM node:24.11.1 -alpine
55+ FROM node:24.14.0 -alpine
5656
5757# ✅ GOOD - Slim variant (Debian-based, ~70MB base)
5858FROM node:24.11.1-slim
@@ -90,15 +90,15 @@ Separate build dependencies from runtime dependencies to minimize final image si
9090``` dockerfile
9191# ✅ GOOD - Multi-stage build
9292# Stage 1: Build
93- FROM node:24.11.1 -alpine AS builder
93+ FROM node:24.14.0 -alpine AS builder
9494WORKDIR /app
9595COPY package.json package-lock.json ./
9696RUN npm ci
9797COPY . .
9898RUN npm run build
9999
100100# Stage 2: Runtime
101- FROM node:24.11.1 -alpine AS runner
101+ FROM node:24.14.0 -alpine AS runner
102102WORKDIR /app
103103ENV NODE_ENV=production
104104COPY --from=builder /app/dist ./dist
@@ -108,7 +108,7 @@ USER node
108108CMD ["node" , "server.js" ]
109109
110110# ❌ BAD - Single stage with all dependencies
111- FROM node:24.11.1 -alpine
111+ FROM node:24.14.0 -alpine
112112WORKDIR /app
113113COPY . .
114114RUN npm install # Includes devDependencies
@@ -139,14 +139,14 @@ Always run containers as a non-root user to minimize security risks.
139139
140140``` dockerfile
141141# ✅ GOOD - Using built-in non-root user
142- FROM node:24.11.1 -alpine
142+ FROM node:24.14.0 -alpine
143143WORKDIR /app
144144COPY --chown=node:node . .
145145USER node
146146CMD ["node" , "server.js" ]
147147
148148# ✅ GOOD - Creating custom non-root user
149- FROM node:24.11.1 -alpine
149+ FROM node:24.14.0 -alpine
150150RUN addgroup -g 1001 -S nodejs && \
151151 adduser -S nodejs -u 1001
152152WORKDIR /app
@@ -160,7 +160,7 @@ COPY --chown=nginx:nginx . /usr/share/nginx/html
160160USER nginx
161161
162162# ❌ BAD - Running as root
163- FROM node:24.11.1 -alpine
163+ FROM node:24.14.0 -alpine
164164WORKDIR /app
165165COPY . .
166166# No USER directive = runs as root
@@ -191,7 +191,7 @@ Order Dockerfile instructions from least to most frequently changing.
191191
192192``` dockerfile
193193# ✅ GOOD - Optimal layer ordering
194- FROM node:24.11.1 -alpine AS builder
194+ FROM node:24.14.0 -alpine AS builder
195195WORKDIR /app
196196
197197# 1. Copy dependency files first (changes infrequently)
@@ -207,7 +207,7 @@ COPY . .
207207RUN npm run build
208208
209209# ❌ BAD - Poor layer ordering
210- FROM node:24.11.1 -alpine
210+ FROM node:24.14.0 -alpine
211211WORKDIR /app
212212COPY . . # Changes frequently, invalidates cache
213213RUN npm install # Re-runs every time
@@ -289,7 +289,7 @@ services:
289289 context : .
290290 dockerfile : Dockerfile
291291 args :
292- NODE_VERSION : 24.11.1 -alpine
292+ NODE_VERSION : 24.14.0 -alpine
293293 image : myapp:1.0.0
294294 container_name : myapp-prod # Unique, descriptive names
295295 ports :
@@ -422,19 +422,19 @@ coverage/
422422FROM node:latest
423423
424424# ✅ GOOD
425- FROM node:24.11.1 -alpine
425+ FROM node:24.14.0 -alpine
426426` ` `
427427
428428# ## 2. ❌ Running as Root
429429
430430` ` ` dockerfile
431431# ❌ BAD
432- FROM node:24.11.1 -alpine
432+ FROM node:24.14.0 -alpine
433433COPY . .
434434CMD ["node", "server.js"]
435435
436436# ✅ GOOD
437- FROM node:24.11.1 -alpine
437+ FROM node:24.14.0 -alpine
438438COPY --chown=node:node . .
439439USER node
440440CMD ["node", "server.js"]
@@ -468,16 +468,16 @@ COPY . .
468468
469469` ` ` dockerfile
470470# ❌ BAD - Single stage with all tools
471- FROM node:24.11.1 -alpine
471+ FROM node:24.14.0 -alpine
472472RUN npm install
473473RUN npm run build
474474CMD ["node", "server.js"]
475475
476476# ✅ GOOD - Multi-stage
477- FROM node:24.11.1 -alpine AS builder
477+ FROM node:24.14.0 -alpine AS builder
478478RUN npm ci && npm run build
479479
480- FROM node:24.11.1 -alpine
480+ FROM node:24.14.0 -alpine
481481COPY --from=builder /app/dist ./dist
482482RUN npm ci --only=production
483483CMD ["node", "server.js"]
@@ -543,7 +543,7 @@ Before finalizing a Dockerfile, ensure:
543543# =========================================
544544# Stage 1: Build
545545# =========================================
546- ARG NODE_VERSION=24.11.1 -alpine
546+ ARG NODE_VERSION=24.14.0 -alpine
547547
548548FROM node:${NODE_VERSION} AS builder
549549
0 commit comments