WEBBOOK CHAPTER

CI/CD, 서버실에서 클라우드까지: 23장. Container image를 작고 검증 가능하게 만든다

23장. Container image를 작고 검증 가능하게 만든다

multi-stage build, non-root, 최소 runtime, digest-pinned base, .dockerignore, health endpoint를 사용한다. build context에 .git, .env, certificate, test dump가 들어가지 않게 한다. image layer history에 secret이 남으면 최종 layer에서 삭제해도 유출이다.


FROM node:24-bookworm AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm test && npm run build

FROM gcr.io/distroless/nodejs24-debian12:nonroot
COPY --from=build /app/dist /app
CMD ["/app/server.js"]

예시 base tag는 출간 시점의 설명용이다. 실제로는 공식 source와 digest를 확인한다. scanner 통과가 runtime 안전을 보증하지 않는다. read-only filesystem, capability drop, resource limit과 egress를 배포에서 적용한다.