최근에 나의 부족함을 많이 느끼고 있는 거 같다. 3년이란 시간 동안 노력하지 않은 죄를 받고 있는 느낌이다. 그래도 꾸준히 하면 내가 원하는 개발자에 다가가지 않을까 하는 생각이다. 언젠간 이 일을 좋아하는 만큼 실력도 따라줘서 개발을 좋아한다고 자랑스럽게 말하는 순간이 왔으면 좋겠다. 좋아한다는 건 그에 대해 궁금해하고 알려고 노력한다는 뜻이니까. 부지런히 노력하고 좋아하자.
애플리케이션의 소스 코드를 변경했을 때 이미지를 효율적으로 다시 빌드하기
패키지 파일을 효율적으로 COPY 하기
기존의 도커 파일에서는 이미지 빌드과정에서 패키지를 다시 내려받고 있다. 이러한 문제를 해결해 보자.
기존 도커파일:
FROM node:10
WORKDIR /usr/src/app
COPY ./ ./
RUN npm install
CMD ["node", "server.js"]
변경 후:
FROM node:10
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY ./ ./
CMD ["node", "server.js"]
기존에는 전체 파일의 변화만 있더라도 npm install이 실행 됐었다. 따라서 모듈을 관리하는 package.json 에 변화가 있을 시에만 패키지를 다운로드하도록 하자.
도커 볼륨을 통한 소스 코드 캐싱
COPY는 로컬 호스트의 디렉터리에 있는 파일을 도커 컨테이너로 복사하는 방식이다. 따라서 도커 볼륨을 이용해서 도커 컨테이너에서 호스트 티렉 터리에 있는 파일들을 참조하자. 이렇게 하면 복사하지 않고 도커 컨테이너에서 로컬 호스트의 디렉터리에 있는 파일을 참조하므로 소스 코드를 변경해도 다시 COPY를 사용해 이미지를 빌드할 필요가 없다.
도커 볼륨 이용하기
도커 볼륨은 도커 컨테이너를 실행할 때 -v 옵션으로 지정할 수 있다. 좀 더 효율적으로 활용하기 위해 pwd 명령을 활용해 보자.
pwd는 현재 작업 중인 디렉터리의 절대 경로를 출력하는 유닉스 계열 명령어이다. 볼륨을 연결할 때 docker run ... -v $(pwd):/usr/src/app 을 입력한다는 것은 pwd 경로에 있는 디렉터리 혹은 파일을 /usr/src/app 경로에서 참조한다는 뜻이다.
docker run -d -p 5000:8000 \
-v $(pwd):/usr/src/app \
<이미지 이름>
'DevOps' 카테고리의 다른 글
다중 컨테이너를 활용한 애플리케이션의 개발 환경 구축 - 1 (0) | 2023.03.13 |
---|---|
도커 컴포즈 파일 작성하기 (0) | 2023.03.10 |
Dockerfile로 nginx + django 서버 만들기 (0) | 2023.03.07 |
따라하며 배우는 도커와 CI 환경 - 3. 직접 도커 이미지 생성하기 (0) | 2023.03.05 |
따라하며 배우는 도커와 CI 환경 - 1. 도커란 (0) | 2023.03.03 |