Expert guidance on Containerization, Dockerfiles, and Docker Compose. Enforces best practices for security, image size, and build speed.
When writing a Dockerfile:
# Build Stage
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
# Production Stage
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/package.json ./
RUN npm install --production
CMD ["npm", "start"]
USER node or create a user).node:18-alpine3.18).version: top-level key needed in newer specs, but 3.8 is safe if required).healthcheck for dependencies (e.g., waiting for DB)..env files for secrets (never hardcode passwords).docker network inspect or docker compose exec app curl db:5432 to test internal networking.docker logs -f <container_id> is the first step.docker exec -it <container_id> /bin/sh (or /bin/bash)..dockerignore to exclude node_modules, .git, Dockerfile, etc.