인프런 커뮤니티 질문&답변

rrallvv .J님의 프로필 이미지
rrallvv .J

작성한 질문수

따라하며 배우는 도커와 CI환경 [2023.11 업데이트]

도커 볼륨을 이용한 소스 코드 변경

Docker volume 사용시 Docker file의 COPY 질문입니다

작성

·

741

0

Docker volume 사용하면 파일을 refernece하게 된다고 이해했습니다.

node_modules는 컨테이너 안에있는걸 직접적으로 사용하고 개발자가 만든 파일들은 개발환경이랑 컨테이너가 mapping된다고 이해했습니다.

1. 그렇다면 Docker file의 COPY ./ ./는 별의미가 없지 않나요?

2.일반적으로 docker를 적용하는 시점이 프로그램 개발 전인가요. 아니면 배포 전인가요?

답변 4

0

rrallvv .J님의 프로필 이미지
rrallvv .J
질문자

답변 너무 감사합니다. 제가 이해한게 맞는지 마지막(?)으로 질문하고 싶습니다.

A - 컨테이너 외부, B - 컨테이너 안

1. 볼륨을 이용하여 소스코드를 mapping 하고 된다면 `-v A:B`, B에 package.json과 node_modules만 있어도 서버를 실행할 수 있다. 

2. 볼륨을 이용하여 소스코드를 맵핑하고 있다면, 컨테이너에서 실제로 서버를 돌리는데 사용하는 코드는 copy ./ ./를 통해 컨테이너 내부에 복사된 코드가 아닌 컨테이너 외부의 코드를 이용해서 서버를 돌리고 있는 것이다.

3. 볼륨이 없다면 copy ./ ./는 서버를 돌리기 위해 사용되는 코드지만, 볼륨이 있다면  copy ./ ./는 컨테이너를 빌드만을 하기 위한 코드이다.

빠르게 답변해주셔서 너무 감사합니다.

정말 많은것을 배우고 있습니다.

0

rrallvv .J님의 프로필 이미지
rrallvv .J
질문자

다커파일로  COPY ./ ./를 하엿기때문에 소스코드도 컨테이너 내에 다 있다고 생각하는데, 어떤식으로 참조를 하고 어떻게 변경이 반영되는지 이해가 안되요 ㅠㅠ

John Ahn님의 프로필 이미지
John Ahn
지식공유자

안녕하세요 !!!     볼륨이 있다면  COPY 부분을 빼셔도 됩니다 ~~  만약    COPY 를 안한다면 컨테이너에 파일이 없겟죠  그러기 때문에 볼륨을 이용해서 로컬 머신에 잇는 파일들을 참조해서 사용해야 합니다 ~ 

0

rrallvv .J님의 프로필 이미지
rrallvv .J
질문자

영상을 한번더 주행하다가 질문이 생겨서 댓글로 남깁니다.

-v A:B 를 하게 되면 B(컨테이너)에서 A(현제 경로)를 참조하게 된다고 햇는데 그렇다는 것은 B에는 소스코드가 있는건지 없는건지 혼란이 옵니다.

1,. B에서는 단수히 참조만 하기 떄문에 소스코드가 없다

2.  B는 A의 코드가 바뀌면 B도 같이 변경된다

어떻게 작동하는게 맞나요?

John Ahn님의 프로필 이미지
John Ahn
지식공유자

1. B 에는 소스 코드 없어도 볼륨을 이룡해 참조한다면  괜찮습니다 

2. A가 바뀐다고 해서  B 가 바뀌지는 않습니다  그러기에 볼륨을 이용해줍니다        

제가  COPY 와 볼륨을 같이 써서 오히려 이해하는 입장에서는  혼동이 왔나봅니다 ㅠㅠ !!     

0

John Ahn님의 프로필 이미지
John Ahn
지식공유자

rrallvv님 안녕하세요  
저번에도 이 질문 해주셨던 분이 기억나는데 
정말 잘이해하셨어야지 이런 질문이 가능하다고 생각합니다 ㅎㅎㅎ 
볼륨을 사용한다면 COPY가 ./ ./ 이부분이 없어도 됩니다  하지만  그럼에도 불구하고 넣어주는걸 추천합니다.

그리고 docker 는 배포를 위해서 뿐만아니라 개발환경에서도 유용하기 때문에 개발환경에서부터 구현해주셔도 됩니다. 

rrallvv .J님의 프로필 이미지
rrallvv .J

작성한 질문수

질문하기