2016-08-14 5 views
2

장고 컨테이너가 장고 앱을 가지고 있습니다. 정적 파일이 생성되어 정적 폴더에 복사됩니다.
컨테이너 폴더 계층 구조 : 내가 고정 표시기 이미지를 구축하기 전에도커 컨테이너에서 호스트로 파일을 노출합니다.

- var 
    - django 
     - app 
     - static 

, 난 ./manage.py collectstatic 실행은 너무 정적 파일은 /var/django/static 폴더에 있습니다. 응용 프로그램을 노출하고 정적 파일을 제공하기 위해, 나는 호스트에 nginx 있습니다. 문제는 컨테이너의 정적 폴더와 지정된 폴더 사이의 볼륨을 수행 할 때 컨테이너의 /var/django/static 폴더가 삭제 된 것입니다 (물론 삭제되지 않지만 마운트 된 상태 임). 이것을 극복 할 수있는 방법이 있습니까? 볼륨을 설정할 때와 마찬가지로 현재 파일도 가져 오도록 docker에 지시할까요?

+0

에 의해 외부 (호스트)에 고정 표시기 컨테이너 내부 호스트에 3. 마운트 폴더를 SSHFS를 설치합니다? 그래서 당신이 여기서 무엇을 할 것인가는 django 웹 어플리케이션을 빌드하고 (dockerfile의'ADD' 키워드를 사용하여) 정적 파일을 nginx 이미지로 푸시하는 데 필요한 모든 것을하는 것입니다. –

+0

왜냐하면 우리의 qa/integration/production env가 어떻게 작동하는지 알기 때문입니다. nginx는 호스트에 있으며 도커에서 실행되지 않습니다. –

+0

나는 본다. 따라서 호스트의 컨테이너 파일을 호스트에 마운트하는 방법을 찾고 있습니다. 이는 사람들이 일반적으로 다른 방식으로 수행하기 때문에 상당히 비 재능입니다. 그렇다면 파일에만 관심이있는 컨테이너를 갖는 목적은 무엇입니까? 정적 파일 디렉토리를'ngix'가 파일을 제공 할 디렉토리에 심볼릭 링크하는 것만 큼은 어떨까요? –

답변

1

볼륨은 Docker에서 마운트로 처리됩니다. 즉, 호스트 디렉토리가 항상 컨테이너의 디렉토리 위에 마운트됩니다. 즉, 현재 Docker 볼륨에서 수행하려는 작업을 수행 할 수 없습니다. https://github.com/docker/docker/issues/4361

한 가지 가능한 해결 방법 당신의 부두 노동자 RUN 명령에서 다음 용기에 빈 디렉토리에 고정 표시기 볼륨을 가지고 있고,하는 것 (또는 시작 :

이 주제에 대한 토론이 Github에서 문제를보기 -up 스크립트), 정적 내용을 볼륨으로 마운트 된 빈 디렉토리에 복사하십시오.

+0

내 솔루션이 나에게 가깝습니다. 컨테이너를 시작하고 볼륨을 마운트 한 후, 볼륨을 파일로 다시 채운 anothe collectstatic 명령을 실행했습니다. –

0

또 다른 멋진 솔루션 : 1. 대신`nginx` 고정 표시기 이미지를 구축하지 왜 SSHD 2. SSHFS

관련 문제