본문으로 건너뛰기
배포와 운영 기초집LESSON 14

Dockerfile과 이미지 빌드 기초

난이도입문 → 초급
예상 시간30분
선수지식이전 강의

14강. Dockerfile과 이미지 빌드 기초

1. 이번 강의에서 해결할 문제

전체 소스·node_modules·.env를 이미지에 무작정 복사하면 이미지가 커지고 비밀이 레이어에 남을 수 있습니다. build와 실행 단계를 분리합니다.

2. 학습 목표

3. 핵심 개념

Dockerfile은 이미지를 만드는 선언 파일이고 각 주요 명령은 캐시 가능한 레이어를 만듭니다. 다단계 빌드는 Node 단계에서 Docusaurus를 build하고 최종 Nginx 단계에는 정적 파일만 복사합니다. .dockerignore는 build context에서 .env, .git, node_modules, 기존 build를 제외합니다. 태그와 이미지 버전 정책은 실제 사용 전 공식 이미지를 확인합니다.

Dockerfile 공식 개요다단계 빌드 문서를 기준으로 합니다.

4. 단계별 실습

1. 파일 편집

실행 위치: 저장소 루트의 학습용 브랜치

실행 전 확인: 기존 파일이 있으면 덮어쓰지 말고 다른 이름을 사용하며 .env가 ignore되는지 확인합니다.

대상: Dockerfile.local.dockerignore

파일 편집
FROM node:24-alpine AS build
WORKDIR /site
COPY package.json package-lock.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=build /site/build /usr/share/nginx/html
EXPOSE 80

예상 결과: build 단계와 정적 실행 단계가 분리된 Dockerfile이 준비됩니다.

2. PowerShell

실행 위치: 저장소 루트

실행 전 확인: Docker daemon과 디스크 여유, .dockerignore.env, .git, node_modules, build 항목을 확인합니다.

대상: 로컬 이미지 dev-foundations-site:local

PowerShell
docker build --file Dockerfile.local --tag dev-foundations-site:local .
docker image inspect dev-foundations-site:local --format "{{.Id}} {{.Size}}"
docker history --no-trunc dev-foundations-site:local

예상 결과: 이미지가 로컬에 생성되고 ID·크기·레이어가 표시되며 비밀 문자열이 없어야 합니다.

5. 배포·운영 흐름이 동작하는 이유

첫 단계는 Node 의존성과 build 도구를 사용하지만 COPY --from은 결과 정적 파일만 최종 단계로 옮깁니다. 작은 실행 이미지는 공격 표면과 전송량을 줄이고 build context 제외는 불필요한 파일 유입을 막습니다.

6. 자주 하는 실수와 안전한 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

Dockerfile과 이미지 빌드 기초 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“Dockerfile과 이미지 빌드 기초” 코드 리뷰에서 유지해야 할 설계 원칙은 무엇인가요?
  2. 문제 2“Dockerfile과 이미지 빌드 기초”에서 ‘floating 태그를 영구적으로 신뢰’ 문제가 생겼습니다. 가장 알맞은 진단 또는 대응은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

14강. Dockerfile과 이미지 빌드 기초 미완료 상태