수복의 프로그래밍 여행기
article thumbnail

방법

 

의미는 호스트 컴퓨터에 있는 파일을 복사해서 컨테이너로 전달하는 것입니다.

 

COPY <호스트의_경로> <컨테이너의_경로>

 

확인을 위해 아래의 파일을 생성하고 Dockerfile 에는 아래의 명령어를 입력합니다.

  • test.txt (test file 이라고 입력)

COPY test.txt /test.txt

 

그리고 Dockerfile을 build 하여 이미지를 생성합니다.

 

 

생성한 이미지를 통해 컨테이너를 생성하고 실행합니다.

 

실행한 컨테이너에 접속합니다.

 

접속 후 아래의 명령어 ls -a 를 통해 test.txt 파일을 찾을 수 있습니다.

 

 

해당 파일을 실행하면 위에서 적은 test file 이라는 결과가 나옵니다.

 

cat test.txt // test.txt 실행 명령어

 

 

파일이 아닌 폴더도 가능

 

앞에서 호스트 컴퓨터에 있는 파일을 복사하여 컨테이너에 전달하였습니다.

 

이와 동일하게 파일이 아닌 폴더도 가능합니다.

 

 

이렇게 하나의 폴더에 두 개의 파일을 만들고 내용을 기입합니다.

 

COPY copy_folder /copy_folder/

 

폴더라는 것을 나타내기 위해 마지막에 슬러쉬(/) 를 기입합니다.

 

그리고 이미지를 생성 및 컨테이너 생성 그리고 실행합니다.

 

 

그리고 컨테이너에 들어가서 확인을 합니다.

 

 

copy_foler 가 보이고 해당 폴더로 들어가면 하위에 두 개의 파일이 있었던 것 처럼 보입니다.

 

 

해당 파일을 실행하면 파일안에 있는 데이터를 확인도 가능합니다.

 

이렇게 두 개의 파일안을 확인해보니 동일하게 복사가 된 것을 확인하였습니다.

 

폴더를 넘어 전체 복사하는 방법

 

해당 폴더 안에 있는 모든 것을 복사하고 싶은 경우가 있을 것입니다.

 

이러한 경우 아래와 같이 입력하면 됩니다.

 

COPY ./ /

 

의미는 호스트의 현재 디렉터리(./)에 있는 모든 파일과 폴더를 컨테이너의 루트 디렉터리(/)로 복사하는 것입니다.

 

여기서 불필요한 파일을 제외하기 위해 .dockerignore 가 사용되기도 합니다.

 

그래서 일반적으로 더 나은 방법 (정리된 구조) 으로는

 

COPY ./ /app

 

등으로 특정 폴더에 넣는 것을 추천합니다.

 

 

반응형
profile

수복의 프로그래밍 여행기

@컴수복

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!