2016-09-10 2 views
2

django 웹 앱을위한 적절한 격리 된 환경을 만들기 시작했습니다. 내 첫번째 성향은 Docker를 사용하는 것입니다. 또한, 일반적으로 을 파이썬 프로젝트와 함께 사용하여 종속성을 격리하는 것이 좋습니다.DevOps 간단한 설정

Docker 이미지를 통해 프로젝트를 격리하는 경우에도 virtualenv이 필요합니까?

답변

2

Docker 컨테이너가 비교적 오래 있거나 프로젝트 종속성이 변경되면 Python 가상 환경을 사용할 때 여전히 가치가 있습니다. 코드베이스와 다른 프로젝트 및 기본 시스템 (특히 특정 상태의 프로젝트)의 종속성을 (상대적으로) 분리하는 것 외에도 특정 시간에 요구 사항의 상태를 나타내는 특정 측정을 허용합니다.

예를 들어, 장고 앱의 Docker 이미지를 오늘 만들고 다음 3 주 동안 사용하게한다고 가정 해 보겠습니다. requirements.txt 파일이 지금과 다음 사이에 수정되는 것을 보시겠습니까? 환경 변화와 함께 제공되는 핫 패치를 작성하는 시나리오를 상상할 수 있습니까?

가상 - env는 stdlib입니다. 즉, 매우입니다. 따라서 Docker 컨테이너가 원래 계획대로 일회용이 아닌 경우에도 계속 사용합니다. 다른 말로하면, Docker 이미지 파이프 라인이 매우 성숙하고 Python 버전과 종속성이 "미리 구운"경우에도 명시 적으로 필요한 것은 아니지만 모범 사례를 고수하는 것이 그다지 중요하지 않은 결과입니다.

+0

virtualenv를 사용하면 종속성 변경에 도움이되는 방법은 무엇입니까? – johnharris85

+0

좋은 격리 및 선언적 종속성 관리를 제공합니다. 종속성 변경마다 새로운 Docker 이미지 (예 : some_dependency 0.1 -> 0.2 또는 더 중요한 것은 패키지 제거)를 작성하고 스크립트의 Python 경로가 예상 한 경로만을 따르도록해야합니다. 그러나 그것은 실제 상황에서 어떻게 사용되는지는 아니며 virtualenv는 이러한 작은 보장을 쉽게 만듭니다. 즉, Docker를 건너 뛰고 LXC를 사용할 수는 있지만 편리함의 그늘에서 이야기하고 있습니다. –

+0

virtualenv는 서로 다른 앱을 분리하는 것입니다. 각 도커 컨테이너가 사실이라면 virtualenv에서 제대로 사용되지 않습니까? 즉. MyDjangoApp는 MyDjangoApp 컨테이너 내에 고립 된 종속성 트리가 절대로 필요하지 않습니다. –

0

각각의 Python/Django가 자체 컨테이너에 살 예정인 것은 아닙니다.

관련 문제