[docker] Docker에 볼륨을 추가하지만 하위 폴더는 제외
내 호스트에 Docker 컨테이너와 폴더가 있다고 가정합니다 /hostFolder
. 나는 볼륨으로 도커 컨테이너에이 폴더를 추가 할 경우 지금, 그때 사용하여이 작업을 수행 할 수 있습니다 ADD
에 Dockerfile
또는 볼륨으로 장착.
여태까지는 그런대로 잘됐다.
이제 /hostFolder
하위 폴더가 포함되어 있습니다 /hostFolder/subFolder
.
/hostFolder
Docker 컨테이너 에 마운트하고 싶습니다 (읽기 쓰기 또는 읽기 전용이 중요하지 않은지, 둘 다 작동하는지 여부).하지만 포함 시키지 않으려 고합니다 /hostFolder/subFolder
. 이것을 제외하고 Docker 컨테이너가 호스트에서 변경하지 않아도이 하위 폴더를 변경할 수 있기를 원합니다.
이게 가능해? 그렇다면 어떻게?
답변
docker-compose 사용 node_modules를 로컬로 사용할 수 있지만 다음 구문의 다음 구문을 사용하여 docker 컨테이너에서 무시하십시오. docker-compose.yml
volumes:
- './angularApp:/opt/app'
- /opt/app/node_modules/
따라서 로컬 시스템 이 비어 있지 않더라도 모든 항목 ./angularApp
이 매핑 된 /opt/app
다음 /opt/app/node_modules/
빈 디렉토리 인 다른 마운트 볼륨 을 만듭니다 ./angularApp/node_modules
.
답변
docker-compose이지만 영구적으로 하위 디렉토리를 무시하려면 다음을 수행하십시오 docker-compose.yml
.
volumes:
node_modules:
services:
server:
volumes:
- .:/app
- node_modules:/app/node_modules
현재 디렉토리를 공유 볼륨으로 마운트하지만 로컬 node_modules
디렉토리 대신 영구 도커 볼륨을 마운트합니다 . 이것은 @kernix의 답변과 비슷하지만 실행 node_modules
사이에 지속될 수 docker-compose up
있으며 이는 바람직한 동작 일 것입니다.
답변
파일을 제외하려면 다음을 사용하십시오.
volumes:
- /hostFolder:/folder
- /dev/null:/folder/fileToBeExcluded
답변
우선, 사용 ADD
Dockerfile에 지시 것은 매우 (비아 중 볼륨을 사용하여 다른 -v
행 인자 docker run
또는 VOLUME
Dockerfile의 명령). ADD
및 COPY
명령은 단지 시간에 파일의 복사본을 docker build
실행됩니다. 이 파일은 docker build
명령 으로 새로운 이미지를 만들 때까지 업데이트되지 않습니다 . 반대로, 볼륨을 사용한다는 것은 본질적으로 “이 디렉토리는 컨테이너 이미지에 저장해서는 안되며 대신 호스트의 디렉토리를 사용하십시오”라는 의미입니다. 볼륨 내부의 파일이 변경 될 때마다 호스트와 컨테이너 모두 즉시 볼 수 있습니다.
볼륨을 사용하여 원하는 것을 얻을 수 있다고 생각하지 않습니다.이를 수행하려면 디렉토리 구조를 다시 생각해야합니다.
그러나 COPY
(을 선호해야 함)을 사용하는 것은 매우 간단합니다 ADD
. .dockerignore
파일을 사용 하여 서브 디렉토리를 제외하거나 COPY
모든 파일을 수행 RUN rm bla
하여 서브 디렉토리를 제거 할 수 있습니다.
이미지에 추가 COPY
하거나 ADD
빌드 컨텍스트 내에 있어야합니다 (즉, 실행하는 디렉토리 내부 또는 아래) docker build
.
답변
이전 솔루션이 더 이상 작동하지 않는 것 같습니다 (적어도 나를 위해). 빈 폴더를 만들고 대상 폴더를 매핑하는 것이 도움이되었습니다.
volumes:
- ./angularApp:/opt/app
- .empty:/opt/app/node_modules/
답변
docker 명령 줄을 사용하여 :
docker run \
--mount type=bind,src=/hostFolder,dst=/containerFolder \
--mount type=volume,dst=/containerFolder/subFolder \
...other-args...
이 -v
옵션을 사용할 수도 있지만 ( Bogdan Mart의 신용 ), --mount
더 명확하고 권장 됩니다.
답변
node_modules 폴더가 여전히 로컬 시스템 및 다른 방법으로 덮어 쓸 수있는 문제가있는 사람들을 위해
volumes:
node_modules:
services:
server:
volumes:
- .:/app
- node_modules:/app/node_modules/
이것은 /
node_modules 뒤에 후행 이있는 해결책입니다.