← 전체 글로 돌아가기

Docker

Dockerfile 빌드 로그에서 문제 원인 빠르게 찾기

Docker 이미지 빌드가 실패했을 때 로그만 보고 원인을 좁히는 방법을 정리했습니다.

Dockerfile 빌드가 실패했을 때 로그 메시지는 보통 길고 복잡하다. 환경 변수 문제인지, 의존성 문제인지, 포트 매핑 문제인지 빠르게 판단해야 한다.

빌드 중 환경 변수 확인

먼저 Dockerfile에 정의된 환경 변수들이 실제로 설정되었는지 확인한다.

docker ps
docker logs --tail=100 service-name

ENV 명령어로 설정한 변수들이 실행 환경에서 제대로 전달되었는지 로그에서 찾아본다.

컨테이너 상태 상세 확인

컨테이너가 실행 중인지, 어떤 상태인지 자세히 본다.

docker inspect service-name

State, Mounts, Config 섹션을 확인해서 볼륨이 제대로 마운트되었는지, 환경 변수가 제대로 설정되었는지 본다.

빌드 로그 핵심 찾기

빌드 로그는 많지만 중요한 부분은 대부분 마지막에 있다. 에러 메시지가 정확히 뭔지 찾아본다.

docker build -t image-name . 2>&1 | tail -50

Step N이 실패했는지 확인하고, 그 Step에서 실행하는 명령어가 뭔지 파악한다.

포트와 네트워크 설정

Dockerfile에서 EXPOSE로 선언한 포트가 실제로 바인딩되었는지 확인한다.

sudo ss -lntp | grep -E 'docker|LISTEN'

로컬과 컨테이너 포트가 제대로 매핑되었는지 본다.

의존성 설치 상태

패키지 설치 단계에서 네트워크 문제나 버전 충돌이 있을 수 있다. 빌드 로그에서 "unable to locate package" 같은 에러가 있는지 찾아본다.

한 가지씩만 수정해보기

환경 변수, Dockerfile 라인, 베이스 이미지 등 여러 개를 동시에 바꾸면 뭐가 문제를 해결했는지 알 수 없다. 한 가지씩만 시도해본다.

문제와 해결 방법을 기록해두면 같은 이미지를 다시 빌드할 때 훨씬 빠르게 진행할 수 있다.