동일한 프로젝트에서 서로 다른 빌드에 대해 서로 다른 .dockerignore 파일을 지정하는 방법은 무엇입니까?
나는 목록을 작성하곤 했습니다.tests
.dockerignore
제가 웹 서비스를 운영할 때 사용했던 이미지에 포함되지 않도록 하기 위해서입니다.
저는 테스트를 . 이에는 도커를 해야 합니다.tests
디렉토리가 포함됩니다.
가 확인했습니다docker build -h
관련된 옵션을 찾을 수 없습니다.
어떻게 해야 하나요?
Docker 19.03은 이에 대한 솔루션을 제공했습니다.
는 Docker를 로드하려고 .
<dockerfile-name>.dockerignore
처음에 그리고 그 다음에 뒤로 떨어집니다..dockerignore
찾을 수 없다면. 그래서.docker build -f Dockerfile.foo .
처음로시도를 하려고 합니다.Dockerfile.foo.dockerignore
.
DOCKER_BUILDKIT=1
현재 이 기능을 사용하려면 환경 변수가 필요합니다.이 플래그는 다음과 함께 사용할 수 있습니다.docker compose
1.25.0-rc3 이후로 를 지정합니다.
Mugen 댓글에서, 참고하세요.
사용자 지정 도커 무시는 원래 .dockerignore와 같은 루트 컨텍스트 디렉터리가 아니라 도커 파일과 동일한 디렉터리에 있어야 합니다.
예.
방문할 때
1UILDKIT=1
빌드 doc 파일 -f /path/to/custom.Dockerfile
...
당신의..dockerignore
은 다음 위치에 .
to/to/to/
custom.Dockerfile
하지 마세요.무시.
현재로서는 이것을 할 방법이 없습니다.추에대긴있토다습니이를 하는 것에 긴 논의가 .--ignore
Docker에 플래그를 지정하여 사용할 무시 파일을 제공합니다. 여기를 참조하십시오.
현재 선택할 수 있는 옵션은 대부분 다음과 같습니다.
- 를 각각 한 하위 가 디렉터리로 합니다.
Dockerfile
그리고..dockerignore
당신의 경우에는 효과가 없을 수도 있습니다. - 관련 파일을 임시 디렉터리에 복사하는 스크립트를 만들고 해당 디렉터리에서 도커 빌드를 실행합니다.
여기서는 세척된 테스트를 컨테이너에 볼륨 마운트로 추가하는 것이 옵션이 될 수 있습니다.이미지를 빌드한 후 테스트를 위해 실행하는 경우 테스트가 포함된 소스 코드를 정리된 코드 위에 마운트합니다.
services:
tests:
image: my-clean-image
volumes:
- '../app:/opt/app' # Add removed tests
활성화를 시도했습니다.DOCKER_BUILDKIT
@이 디자인은 제가 제안했지만 (이 질문의 범위 밖에서) 다른 문제에 부딪혔습니다.
대안으로, 저는 tar에 포함될 파일이 포함된 txt 파일을 가져오는 -T 플래그를 사용하여 중간 tar를 만들고 있습니다. 따라서 화이트리스트 .dockerignore와 크게 다르지 않습니다.
이 tar를 내보내고 docker build 명령어로 파이프를 연결한 다음 파일 계층의 모든 위치에 있는 docker 파일을 지정합니다.결국에는 다음과 같이 보입니다.
tar -czh -T files-to-include.txt | docker build -f path/to/Dockerfile -
또 다른 옵션은 테스트를 포함한 추가 빌드 프로세스를 수행하는 것입니다.제 방식은 다음과 같습니다.
테스트가 단위 테스트인 경우 메인 프로젝트 이미지에서 파생된 새 도커 이미지를 생성합니다. 저는 그냥 다음을 붙입니다.FROM
맨 위에, 그리고 나서.ADD
테스트 및 필요한 모든 도구(내 경우)mocha
,chai
등).이제 이 새로운 '테스트' 이미지에는 테스트와 테스트할 원래 소스가 모두 포함됩니다.그런 다음 단순히 그대로 실행하거나 호스트의 소스 및 테스트 디렉토리에 매핑된 볼륨을 사용하여 '감시 모드'로 실행할 수 있습니다.
테스트가 통합 테스트인 경우(예: 기본 이미지가 GraphQL 서버일 수 있음), 생성한 이미지는 기본 이미지에서 파생되지 않은 자체 포함된 것입니다(물론 테스트와 도구가 여전히 포함되어 있음).테스트에서는 환경 변수를 사용하여 테스트가 필요한 엔드포인트를 찾는 위치를 알려줍니다. Docker Compose를 사용하면 기본 이미지를 사용하는 컨테이너와 통합 테스트 이미지를 사용하는 다른 컨테이너를 모두 불러올 수 있고 테스트 제품군이 테스트할 내용을 알 수 있도록 환경 변수를 설정할 수 있습니다.
안타깝게도 현재 사용할 특정 파일을 가리킬 수 없습니다..dockerignore
대상/플랫폼/이미지를 기반으로 빌드 스크립트에서 생성합니다.도커 애호가로서 이것은 슬프고 당혹스러운 해결책입니다.
언급URL : https://stackoverflow.com/questions/40904409/how-to-specify-different-dockerignore-files-for-different-builds-in-the-same-pr
'programing' 카테고리의 다른 글
봄에 데이터 mongodb 집계를 위한 페이지화를 달성하는 방법 (0) | 2023.07.30 |
---|---|
.each()가 완료된 후 jQuery 함수 호출 (0) | 2023.07.30 |
스프링 부트 R2DBC: org.mariadb.r2dbc.client.유휴 기간 후 클라이언트 Base 연결에 예기치 않은 오류가 발생했습니다. (0) | 2023.07.30 |
조각을 사용하여 백스택 지우기 (0) | 2023.07.30 |
passport.js RESTful 인증 (0) | 2023.07.30 |