Dockerfile 처리 순서에 따른 실행시간 변화

overleaf 서버의 서비스를 수정하여 다시 빌드하는 과정에서 빌드 시 너무 긴 소요 시간이 발생하는 문제가 있었다. 나는 web서비스를 조금 바꾸어 이 파일을 기반으로 이미지를 생성하고 싶은데, 이미지 수정하고 커밋하면 된다는 것을 너무 늦게 알아버렸다.

이미지 커밋 방법을 잘 모를 때 문제가 무엇인지 분석을 해봤는데, 아래의 코드가 문제였다.

# Update texlive server
# ---------------------
RUN tlmgr option repository https://ctan.math.washington.edu/tex-archive/systems/texlive/tlnet && \
tlmgr install scheme-full && \
tlmgr path add

이 코드가 문제인 이유는 업데이트 시에 상당한 시간을 소모하고, 나는 아래에서 서비스만 변경하여 이미지 생성시 이 과정을 다시 밟을 이유가 없다는 것이다.

그래서 도커 파일에 대해 공부해보니, docker는 수정된 부분만 다시 빌드하고, 그렇지 않은 부분은 빌드하지 않는다는 사실을 알게 되었다. 이처럼 다시 빌드하지 않는 이유는 캐쉬에 저장되어 있기 때문이었다.

overleaf의 Dockerfile의 빌드 순서를 변경하여 해당 코드를 상단으로 올림으로서 이를 해결했다.
빌드 순서가 원래는 마지막에 해당 코드가 실행되어

텍스라이브 설치 -> 서비스 변경 사항 적용 -> 텍스 라이브 업데이트

위의 절차에서

텍스 라이브 설치 -> 텍스 라이브 업데이트 -> 서비스 변경 사항 적용

위의 절차로 변경하게 되었다. 이를 적용한 후 이미지 빌드 시에는 크게 문제 없이 서비스 적용 사항만 빌드하여 1시간 넘게 걸리던 이미지 빌드 시간을 5분으로 단축할 수 있었다.

'Study Notes > Trouble Shooting' 카테고리의 다른 글

VSCode gcc/g++ 설치  (0) 2025.07.13

댓글