반응형
Docker가 변경된 경우에만 pip requirements.txt를 실행하는 방법은 무엇입니까?
Dockerfile에는 다음을 설치하는 계층이 있습니다 requirements.txt
.
FROM python:2.7
RUN pip install -r requirements.txt
도커 이미지를 빌드하면 이 파일의 변경 사항에 관계없이 전체 프로세스가 실행 됩니다.
pip install -r requirements.txt
파일이 변경된 경우 에만 Docker가 실행되도록하려면 어떻게해야 합니까?
Removing intermediate container f98c845d0f05
Step 3 : RUN pip install -r requirements.txt
---> Running in 8ceb63abaef6
Collecting https://github.com/tomchristie/django-rest-framework/archive/master.zip (from -r requirements.txt (line 30))
Downloading https://github.com/tomchristie/django-rest-framework/archive/master.zip
Collecting Django==1.8.7 (from -r requirements.txt (line 1))
빌드 프로세스의 어느 시점에서 COPY
또는 ADD
다음을 사용 하여 전체 애플리케이션을 Docker 이미지에 복사한다고 가정합니다 .
COPY . /opt/app
WORKDIR /opt/app
RUN pip install -r requirements.txt
문제는 전체 애플리케이션을 이미지에 복사 할 때마다 Docker 빌드 캐시를 무효화한다는 것입니다. 이것은 또한 모든 후속 빌드 단계에 대한 캐시를 무효화합니다.
이를 방지하려면 전체 애플리케이션을 이미지에 추가하기 전에 별도의 빌드 단계에서 파일 만requirements.txt
복사하는 것이 좋습니다 .
COPY requirements.txt /opt/app/requirements.txt
WORKDIR /opt/app
RUN pip install -r requirements.txt
COPY . /opt/app
# continue as before...
요구 사항 파일 자체는 거의 변경되지 않으므로 애플리케이션 코드를 이미지에 추가 할 때까지 캐시 된 레이어를 사용할 수 있습니다.
이것은 Docker의 자체 " Dockerfile 작성 모범 사례 "에서 직접 언급됩니다 .
컨텍스트에서 다른 파일을 사용하는 여러 Dockerfile 단계가있는 경우 한 번에 모두 복사하지 말고 개별적으로 복사하십시오. 이렇게하면 특별히 필요한 파일이 변경된 경우에만 각 단계의 빌드 캐시가 무효화됩니다 (단계가 다시 실행되도록 함).
예를 들면 :
COPY requirements.txt /tmp/ RUN pip install --requirement /tmp/requirements.txt COPY . /tmp/
COPY를 넣는 경우보다 RUN 단계에 대한 캐시 무효화가 더 적습니다. / tmp /.
반응형
'development' 카테고리의 다른 글
Asp.Net VNext를 사용할 때 application / font-woff2가 작동하지 않음 (0) | 2020.12.28 |
---|---|
ANTLR4로 AST를 만드는 방법은 무엇입니까? (0) | 2020.12.28 |
jq를 사용하여 JSON 문자열 구문 분석 (0) | 2020.12.28 |
PHP-MySQL에서 단일 레코드를 읽는 간단한 방법 (0) | 2020.12.28 |
현재 수업과 방법을 얻으시겠습니까? (0) | 2020.12.28 |