GitHub Actions에서 도커 캐시를 적용해 이미지 빌드하기
두줄요약
GitHub Actions의 매번 새로 생성되는 러너 때문에 Docker 레이어 캐시가 사라지는 원인을 설명했습니다. Buildx와 `type=gha` 캐시로 반복 빌드 시간을 줄이는 방법을 소개합니다.
문제 상황
- GitHub Actions로 Docker 이미지를 빌드·ECR 푸시하는 배포 과정에서 변경이 적어도 빌드 시간 유지
- 로컬 재빌드에서는 Docker 레이어 캐시로 빌드 시간이 크게 단축되는 차이
원인 분석
- GitHub-hosted runner의 매 실행별 신규 가상 환경 생성
- 기본 GitHub Actions 캐시 대상에 Docker 레이어 캐시 미포함
- Dockerfile 단계 변경 시 해당 단계 이후 레이어 캐시 무효화
해결 방법
docker/setup-buildx-action으로 Buildx 설정docker/build-push-action의cache-from,cache-to에type=gha적용- GitHub Cache API를 통한 BuildKit 레이어 캐시 저장·재사용
성능/운영 포인트
- 의존성 파일 복사 후
npm install을 수행하고 소스 전체 복사를 뒤에 배치하는 레이어 구성 - 재배포 시
RUN npm install캐시 재사용으로 빌드 시간 약 1분 단축 type=gha방식의 실험 단계 상태와 Buildx·BuildKit 버전 조건 확인



