IT박스

Docker는 컨텍스트 외부에서 심볼릭 링크를 따릅니다.

itboxs 2020. 12. 13. 09:06
반응형

Docker는 컨텍스트 외부에서 심볼릭 링크를 따릅니다.


또 다른 Docker 심볼릭 링크 질문입니다. 모든 Docker 빌드에 복사하려는 파일이 많이 있습니다. 내 디렉토리 구조는 다음과 같습니다.

parent_dir
    - common_files
        - file.txt
    - dir1
        - Dockerfile  
        - symlink -> ../common_files

위의 예에서 dir1 내부에 도커 빌드를 할 때 file.txt를 복사하고 싶습니다. 하지만 file.txt의 여러 복사본을 유지하고 싶지 않습니다. 고정 표시기 버전 0.10로이 링크 , 고정 표시기 구축해야

ADD 빌드 지침은 컨테이너 루트 내부의 심볼릭 링크를 따르십시오.

하지만 Dockerfile에서 다음 줄 중 하나를 사용하여 빌드 할 때 이러한 파일이나 디렉터리없습니다 .

ADD symlink /path/dirname 또는 ADD symlink/file.txt /path/file.txt

마운트 옵션으로 해결되지 않습니다 (크로스 플랫폼 ...). 나는 tar -czh . | docker build -t성공하지 못했다.

Docker가 심볼릭 링크를 따르고 common_files / file.txt를 빌드 된 컨테이너에 복사하도록하는 방법이 있습니까?


그것은 불가능하며 구현되지 않을 것입니다. github issue # 1676에 대한 토론을 살펴보십시오 .

반복 할 수 없기 때문에 허용하지 않습니다. 컴퓨터의 심볼릭 링크는 내 컴퓨터와 동일하지 않으며 동일한 Dockerfile은 두 가지 다른 결과를 생성합니다. 또한 / etc / paasswd에 대한 심볼릭 링크가 있으면 로컬 파일이 아닌 호스트 파일을 링크하므로 문제가 발생합니다.


이 문제가있는 다른 사람 은이 링크참조하십시오 . 개인적으로 저는 "공통 기본 이미지 구축"솔루션을 선택했으며 훌륭하게 작동합니다.


한 가지 가능성은 다음을 사용하여 상위 디렉토리에서 빌드를 실행하는 것입니다.

$ docker build [tags...] -f dir1/Dockerfile .

(또는 동등하게 하위 디렉토리에서)

$ docker build  [tags...] -f Dockerfile ..

Dockerfile은 적절한 경로로 복사 / 추가를 수행하도록 구성되어야합니다. 설정에 따라 .dockerignore부모가 컨텍스트에 포함하고 싶지 않은 것을 제외하도록 할 수 있습니다.


simlink를 사용하는 대신 simlink를 복사하거나 만드는 대신 sites_available에서 sites_enabled로 파일을 이동하여 관리적으로 문제를 해결할 수 있습니다.

따라서 사이트 구성은 중지 된 경우 site_available 폴더에만, 또는 사용해야하는 경우 sites_enabled에있는 사본 하나에 만 있습니다.

참고 URL : https://stackoverflow.com/questions/31881904/docker-follow-symlink-outside-context

반응형