따라서 주요 의도는 fat jar 애플리케이션을 Dockerize하여 Elasticbeanstalk에 넣는 것이 었습니다. 문제는 맥락에 있습니다. 내가 필요한 것이 실제로 단일 jar 파일이라면 Docker에 너무 많은 컨텍스트를 추가하는 것은 조금 어리석은 일입니다.
.dockerignore 파일을 가지고 놀았지만 길을 잃었습니다. gitignore 부정을 사용하려고했지만 작동하지 않습니다.
*
!Dockerfile
*/
!target/
target/*
!target/*.jar
정규식에도 그런 것이 있지만 복잡한 정규식은 지원되지 않는 것 같습니다.
^((?!Dockerfile).)*$
나는 또한 stackoverflow에서 검색을 시도 했으며이 두 가지 모두 내가 찾은 것입니다.
이 질문은 두 번째 질문과 비슷할 수 있지만 여기에서는 컨텍스트에 단일 파일을 포함하고 싶기 때문에 약간 차이가 있다고 생각합니다.
도움을 주시면 감사하겠습니다.
답변
일부 디렉토리 또는 파일을 제외한 모든 것을 무시하고 허용 된 디렉토리 내의 불필요한 파일도 무시해야하는 경우 다음 .dockerignore
파일을 사용할 수 있습니다 .
# Ignore everything
**
# Allow files and directories
!/file.txt
!/src/**
# Ignore unnecessary files inside allowed directories
# This should go after the allowed directories
**/*~
**/*.log
**/.DS_Store
**/Thumbs.db
답변
로부터 dockerfile 참조 :
Go의 filepath.Match 규칙 외에도 Docker는 모든 디렉토리 (0 포함)와 일치하는 특수 와일드 카드 문자열 **도 지원합니다. 예를 들어 ** / *. go는 빌드 컨텍스트의 루트를 포함하여 모든 디렉토리에서 발견되는 .go로 끝나는 모든 파일을 제외합니다.
따라서 단순히 **를 포함하는 줄은 Dockerfile과 동일한 디렉터리에있는 모든 것을 무시합니다.
예상대로 느낌표를 사용하여 docker 데몬으로 보내려는 파일을 참조 할 수 있습니다.
답변
이상하게 들릴 수 있지만 단일 jar 파일 만 있으면 Dockerfile을 포함하는 빌드 시스템에 “docker”폴더를 만들 수 있습니다. 빌드를 실행할 때 빌드 스크립트가 단일 jar 파일을 “docker”에 복사 한 다음 “docker”폴더 내부에서 도커 이미지 빌드를 실행하고 완료되면 docker 레지스트리로 푸시하도록합니다.