도커에 볼륨을 추가하지만 하위 폴더 제외
합니다./hostFolder
이 하려면 Docker를 사용하여 이 할 수 .ADD
에 시대에Dockerfile
볼륨으로 마운트할 수도 있습니다.
지금까지, 좋아요.
지금이다/hostFolder
폴더인 하위폴포니다함합이 되어 있습니다./hostFolder/subFolder
.
탑재하고 싶습니다./hostFolder
Docker 컨테이너(읽기-쓰기 또는 읽기 전용이든 상관 없음, 둘 다 작동함)에 포함시키지만 포함시키고 싶지 않습니다./hostFolder/subFolder
이 항목을 제외하고 Docker 컨테이너가 호스트에서 변경되지 않고 이 하위 폴더를 변경할 수 있기를 원합니다.
이것이 가능합니까?만약 그렇다면, 어떻게?
를 사용하면를 사용할 수 docker-compose의 할 수 docker-compose.yml
volumes:
- './angularApp:/opt/app'
- /opt/app/node_modules/
그서모든것에 모든 것../angularApp
는 에 매핑되어 있습니다./opt/app
그런 다음 다른 마운트 볼륨을 생성합니다./opt/app/node_modules/
은 빈 디렉토리가 . 내 머신에 말이죠../angularApp/node_modules
비어 있지 않습니다.
합성에 하려면 도에커의무하시디위리를영합에서 다음을 할 수 .docker-compose.yml
:
volumes:
node_modules:
services:
server:
volumes:
- .:/app
- node_modules:/app/node_modules
이렇게 볼륨으로 "Docker 볼륨" 대신 영구 도커 볼륨을 수 .node_modules
디렉토리입니다.이것은 @kernix의 답과 비슷하지만, 이것은 가능할 것입니다.node_modules
를 유지하다docker-compose up
실행. 원하는 동작일 가능성이 높습니다.
를 원활하게 준비되어 .node_modules
로컬에 의해 재정의되지 않습니다. 도움이 될 수 있습니다.
- 도커 구성을 변경하여 익명 영구 볼륨을 node_modules에 마운트하여 로컬에서 재정의하지 않도록 합니다.이것은 이 스레드에서 몇 번 설명되었습니다.
services:
server:
build: .
volumes:
- .:/app
- /app/node_modules
- 이것이 우리가 놓치고 있던 중요한 부분입니다.는 스을회킬때사용시를 합니다.
docker-compose -V
새 때됩니다.node_modules
당신의 첫 번째 도커-포켓 발사부터.
-V, --renew-anon-volumes Recreate anonymous volumes instead of retrieving
data from the previous containers.
파일을 제외하려면 다음을 사용합니다.
volumes:
- /hostFolder:/folder
- /dev/null:/folder/fileToBeExcluded
도커 명령줄 사용:
docker run \
--mount type=bind,src=/hostFolder,dst=/containerFolder \
--mount type=volume,dst=/containerFolder/subFolder \
...other-args...
그-v
옵션이 사용될 수도 있습니다(Bogdan Mart에 대한 크레딧).--mount
보다 명확하고 권장됩니다.
첫번째, 을 사용합니다.ADD
Docker 파일의 명령은 볼륨을 사용하는 것과 매우 다릅니다.-v
에 대한 인수입니다.docker run
는또.VOLUME
Docker 파일에 있는 명령).ADD
그리고.COPY
명령은 단지 그 당시 파일의 복사본을 가져옵니다.docker build
실행됩니다.이러한 파일은 다음을 사용하여 새 이미지를 생성할 때까지 업데이트되지 않습니다.docker build
휘권지 하는 것은 으로 "이는 컨테이너 되지 않고 해야 합니다라고 말합니다. 모두 를 즉시볼 수 .반대로 볼륨을 사용하는 것은 기본적으로 "이 디렉터리는 컨테이너 이미지에 저장되지 않고 대신 호스트의 디렉터리를 사용해야 합니다."라고 말합니다. 볼륨 내부의 파일이 변경될 때마다 호스트와 컨테이너 모두 해당 디렉터리를 즉시 볼 수 있습니다.
볼륨을 사용하여 원하는 것을 달성할 수 있다고 생각하지 않습니다. 이렇게 하려면 디렉터리 구조를 다시 생각해야 합니다.
그러나 사용하는 것은 매우 간단합니다.COPY
더 .)ADD
) 를도 있습니다.dockerignore
디렉터리를 "파일"을 할 수 있습니다.COPY
이 든파을수니다합행일모를 합니다.RUN rm bla
하위 디렉터리를 제거합니다.
이미에추가모파다같음습다니과일은든으로 이미지에 하십시오.COPY
또는ADD
빌드 컨텍스트 내에 있어야 합니다. 즉, 실행하는 디렉토리 내 또는 아래에 있어야 합니다.docker build
node_dll 폴더가 로컬 시스템에서 덮어쓰거나 그 반대의 경우에도 문제가 있었던 사람들을 위해
volumes:
node_modules:
services:
server:
volumes:
- .:/app
- node_modules:/app/node_modules/
이것이 해결책입니다, 추적과 함께./
node_node_fix 합니다.
이전 솔루션은 더 이상 작동하지 않는 것 같습니다(적어도 저에게는).그러나 빈 폴더를 만들고 대상 폴더를 매핑하는 것이 도움이 되었습니다.
volumes:
- ./angularApp:/opt/app
- .empty:/opt/app/node_modules/
도커 바인드 마운트 및 node_modules 관련 작업 링크를 찾았습니다.
이 작업 솔루션은 도커 볼륨 관리자에 "제외"라는 이름의 볼륨을 생성합니다.볼륨 이름 "exclude"는 임의이므로 볼륨에 대한 사용자 지정 이름을 제외 대신 사용할 수 있습니다.
services:
node:
command: nodemon index.js
volumes:
- ./:/usr/local/app/
# the volume above prevents our host system's node_modules to be mounted
- exclude:/usr/local/app/node_modules/
volumes:
exclude:
공식 문서에서 볼륨에 대한 더 많은 정보를 볼 수 있습니다 - 도커 작성과 함께 볼륨 사용
이것은 Manjaro Linux에서 작동합니다. Docker Composyml은 마지막 비 스웜 버전 이후로 v2.4가 맨 위에 있습니다.호스트의 스냅샷 폴더가 도커 컨테이너에서 제외되었는지 확인하려고 합니다.도커 구성에 볼륨 섹션이 없으므로 단순하게 유지합니다.
version: "2.4"
services:
filerun:
volumes:
- $DATAPOOL/users:/user-files
- /user-files/snapshots/
호스트에서 폴더 사용자/스냅샷은 변경되지 않은 상태로 유지됩니다.컨테이너 내에서 사용자 파일/스냅샷 폴더는 빈 폴더에 불과합니다.
프로젝트 내부에 존재해야 하는 파일, 특히 env 파일의 경우 다음 솔루션을 사용했습니다.
volumes:
- ./empty.env:/app/.env
여기서 "empty.env"는 빈 파일일 뿐입니다.컨테이너 내부와 외부의 다른 환경에서 동일한 브랜치를 사용하는 데 도움이 되었습니다.
컴퓨터의 볼륨에 포함된 마운트된 파일을 제외하려면 이 파일에 볼륨을 할당하여 덮어써야 합니다.구성 파일:
services:
server:
build : ./Dockerfile
volumes:
- .:/app
도커 파일의 예:
# Image Location
FROM node:13.12.0-buster
VOLUME /app/you_overwrite_file
언급URL : https://stackoverflow.com/questions/29181032/add-a-volume-to-docker-but-exclude-a-sub-folder
'programing' 카테고리의 다른 글
jQuery로 모든 양식 요소(입력, 텍스트 영역 및 선택)를 가져오려면 어떻게 해야 합니까? (0) | 2023.08.21 |
---|---|
PHP 날짜 시간이 오늘보다 큼 (0) | 2023.08.21 |
.gitignore 특정 파일 제외 (0) | 2023.08.16 |
셀에서 UITableViewCell indexPath를 가져오는 방법은 무엇입니까? (0) | 2023.08.16 |
현재 날짜에 일을 추가하는 방법은 무엇입니까? (0) | 2023.08.16 |