# 기존 방식
echo -e '
# 기본 이미지 설정
FROM nginx:latest
# index.html 파일 복사
COPY source/web /web
COPY source/etc/nginx/conf.d/vhost.conf /etc/nginx/conf.d/vhost.conf
' > Dockerfile
해당 예제에서는 vhost.conf는 설정 파일이라고 가정하고 /web에 들어가는 파일들은 애플리케이션 코드라고 가정해보자.
Docker image 빌드 시 캐시를 사용을 하게 되어있다.
위의 Dockerfile로 한 번 빌드를 하고 다시 빌드를 한다면?
도커는 처음 빌드 때 해당 파일들의 해시 값을 기억해뒀다가 두 번째 빌드 때
해시 값과 일치한지 판단 후에 같다면 다시 실행시키지 않는다.
좀 더 풀어서 설명하자면 만약 web/index.html 파일만 수정을 하고 다시 빌드한다면
아래에 COPY source/web /web 라인부터 명령어를 실행할 것이다.
그럼 만약 vhost.conf만 수정을 했다면?
COPY source/etc/nginx/conf.d/vhost.conf /etc/nginx/conf.d/vhost.confCOPY source/web /web 이 부분은우리는 vhost.conf는 설정 파일이고 /web 하위의 디렉토리와 파일들은 애플리케이션 코드라고 가정한다고 했으니 한 번 생각해보자.
설정 파일의 변경사항이 많을까?
그럼 지금까지 작성한 토대로 생각을 해보면 아래와 같이 Dockerfile이 수정되는게 맞을 것이다.
총 정리
echo -e '
# 기본 이미지 설정
FROM nginx:latest
# 설정 파일의 COPY가 위로가고 애플리케이션 디렉토리의 COPY가 아래로 가도록 수정
COPY source/etc/nginx/conf.d/vhost.conf /etc/nginx/conf.d/vhost.conf
COPY source/web /web
' > Dockerfile
작성자가 복습 차원에서 간단한 개념 정리 용도로 작성하는 글 입니다.
혹시나 틀린 부분이 있다면 댓글 부탁드리겠습니다!**