GitHub Actions에서 도커 캐시를 적용해 이미지 빌드하기
두줄요약
Docker 레이어 캐시의 동작과 Dockerfile 작성 순서가 빌드 시간에 미치는 영향을 설명했습니다. GitHub Actions의 매번 새로 생성되는 러너 환경 때문에 캐시가 사라지는 원인을 다뤘습니다.
문제 상황
- GitHub Actions에서 Docker 이미지 빌드·Amazon ECR 푸시 과정의 반복적인 긴 빌드 시간
- 변경이 거의 없어도
npm install을 포함한 빌드 단계의 매번 재실행
구조와 흐름
- Dockerfile 명령어별 레이어 생성과 이전 레이어 재사용 기반의 로컬 Docker 캐시
package.json·package-lock.json변경 시COPY단계부터 후속npm install레이어 재생성.dockerignore를 통한 불필요한 빌드 컨텍스트 제외
원인 분석
- GitHub Actions 러너의 실행마다 새 가상 환경 생성
- Docker 레이어 캐시 부재로 동일 Dockerfile·소스에도 캐시 미적용
주의할 점
RUN명령 통합으로 레이어 수와 이미지 크기 절감 가능- 의존성 파일을 먼저 복사하는 Dockerfile 순서에 따른 캐시 범위 결정
