programing

도커가 있지만 제외된 복사

sourcejob 2023. 9. 1. 20:50
반응형

도커가 있지만 제외된 복사

도커 파일에서, 나는.

COPY . .

전체 디렉터리(내 경우에는 node_modules 디렉터리)를 제외하고 싶습니다.

이와 같은 것:

   COPY [all but **/node_modules/**] .

도커로 이것이 가능합니까?

파일 만들기.dockerignore도커 빌드 컨텍스트 디렉터리(따라서 이 경우 node_dll의 상위 디렉터리일 가능성이 높습니다.)에 한 줄이 있습니다.

**/node_modules

아마도 당신이 원할 것입니다:

node_modules

도커 무시에 대한 정보: https://docs.docker.com/engine/reference/builder/ #도커 무시 파일

.dockerignore 파일을 사용할 수 없는 사용자(예: 한 복사본에 파일이 필요하지만 다른 복사본에는 필요하지 않은 경우):

예, 하지만 복사 지침이 여러 개 필요합니다.특히 제외할 파일 이름의 각 문자에 대한 사본이 필요합니다.

COPY [^n]*    # All files that don't start with 'n'
COPY n[^o]*   # All files that start with 'n', but not 'no'
COPY no[^d]*  # All files that start with 'no', but not 'nod'

전체 파일 이름 또는 접두사만 확인할 때까지 계속하면 다른 파일이 없습니다.

ONE LINER 솔루션의 경우 명령 프롬프트 또는 프로젝트 루트의 터미널에 다음입력합니다.

echo node_modules >> .dockerignore

이 명령은 .dockerignore 파일에 "node_modules"를 추가합니다..dockerignore가 아직 존재하지 않으면 새 .dockerignore가 생성됩니다.node_modules를 제외할 폴더로 바꿉니다.

경고:Docker 에코시스템을 처음 사용하는 경우 또는 프로젝트에 .dockerignore 파일이 이미 있는 경우 계속하기 전에 백업을 수행하십시오.

보너스: (조이 바룩이 지적한 바와 같이)

(To CREATE/OVERWRITE the .dockerignore file via PowerShell, which can be handled by Docker):
>> echo node_modules | Out-File -Encoding UTF8 .dockerignore

현재 디렉터리에서 node_modules 제외

node_modules

즉시 하위 디렉터리에서 node_modules 제외

*/node_modules

여기 공식 문서가 있습니다.

gcloud build를 사용하는 사용자:

gcloud build무시하는.dockerignore그리고 대신에 찾아봅니다..gcloudignore

사용:

cp .dockerignore .gcloudignore

원천

.dockerignore를 추가하는 것은 나에게 효과가 있습니다.한 가지 추가 사항 Windows에서 이 솔루션을 시도하는 사용자는 .dockerignore 파일을 만들없습니다(기본적으로 로 시작하는 파일을 만들 수 없기 때문에).

Windows에서 .로 시작하는 파일을 만들려면 폴더 옵션에서 확장자 보기 옵션을 활성화한 경우: 및 Enter 키와 같은 점도 포함합니다.

파일에 액세스하려면 한 단계가 필요했지만 .dockerignore가 작동하지 않도록 다른 단계가 필요했기 때문에 다단계 빌드 접근 방식을 사용했습니다.

FROM ruby AS builder

COPY app/ app/

# Do stuff with app

# remove the stuff you don't want
RUN rm -Rf app/assets

FROM ruby AS publish

# In my real version I needed the absolute path to builder WORKDIR.
# Since I'm copying from the builder stage, app/assets won't exist
# and neither will it be part of the publish image.
COPY --from=builder app app

언급URL : https://stackoverflow.com/questions/43747776/copy-with-docker-but-with-exclusion

반응형