-
배포 - Docker Volumes에 대하여Infra/CI-CD 2022. 12. 30. 20:04
Application소스 변경으로 다시 재build 시 효율적으로 하는 법을 통해 종속성 모듈의 변화가 없을 시에는 RUN명령을 다시 실행하지 않아도 되었습니다.
하지만 아직도 소스코드가 변경될 때마다 변경된 소스코드 부분은 COPY를 한 후에 image를 다시 build해준뒤에 다시 Docker Container를 run해줘야 변경된 소스코드가 반영됩니다. 이러한 작업은 불필요한 시간의 소요를 발생시키고 image의 빌드 횟수도 빈번하게 합니다.
이러한 문제점을 해결하기위해 Volume을 사용하게 됩니다.
COPY명령어를 통한 컨테이너 실행의 문제점은 image를 다시 build해줘야 로컬의 소스코드의 변경사항이 도커 컨테이너에도 반영된다는 점이다.
Volume이라는 것은 Docker Container에서 node서버를 위한 공간이 있는데 해당하는 부분들을
COPY하는 것이 아니라 로컬에 있는 소스코드 내용을 계속해서 참조하는 것이다. 즉 Docker Container에서 로컬에 있는 파일이나 디렉토리 종속성들을 계속 바라보고 있고 로컬에 변화가 있으면 Docker Container에도 반영을 하는 것이다.
Volume 사용해서 어플리케이션 실행하는 방법
mac
docker run -d --name dockernodeapp -p 8070:8070 -v /usr/src/app/node_modules -v $(pwd):/usr/src/app surge100/nodejs2
위 명령어를 사용하면 volume 매핑을 통해서 굳이 다시 Docker image를 빌드하지 않아도 소스가 변경된다.
window
docker run -d --name dockernodeapp -p 8070:8070 -v /usr/src/app/node_modules -v ${pwd}:/usr/src/app surge100/nodejs2
'Infra > CI-CD' 카테고리의 다른 글
배포 - Docker Compose 파일 작성하기 (0) 2022.12.31 배포 - Docker Compose에 대하여 (0) 2022.12.31 배포 - Application소스 변경으로 다시 재build 시 효율적으로 하는 법 (0) 2022.12.25 배포 - WORKING DIRECTRORY 명시해 주기 (0) 2022.12.25 배포 - 생성한 이미지로 app 실행 시 접근이 안되는 이유(포트 맵핑) (0) 2022.12.25