2017-10-10 5 views
-1

ClamAV가 설치된 호스트 OS (Ubuntu)가 있습니다. 이 OS에서 Docker 컨테이너를 실행하고 있습니다. 이 컨테이너는 공개적으로 마주 치는 노드 웹 앱을 실행 중입니다.Docker 컨테이너 웹 응용 프로그램 내부에서 호스트 OS의 이벤트 트리거

이 웹 응용 프로그램에는 도커 컨테이너 내의 폴더에 업로드하는 파일 업로드 기능이 있습니다.

이 폴더는 호스트 OS에서 액세스 할 수 있도록 "마운트"되어 있습니다.

바이러스를 검사해야하는 경우 검사 결과와 함께 Docker 컨테이너 응용 프로그램에 다시보고해야합니다. 이 결과는 처리되어 사용자에게 전달됩니다.

파일이이 폴더에 업로드되었을 때 호스트 OS에 알리는 가장 좋은 방법은 무엇입니까? 내 마음을 통해 갈

방법은 다음과 같습니다

  • 호스트 OS 폴링 폴더 변경 (바람직하지 않음)을 확인 할 수 있습니다.
  • 웹 응용 프로그램은 특정 하위 폴더를 검색하도록 호스트 운영 체제에 알리기 위해 일부 Docker "이벤트"(또는 유사한)를 실행합니다 (파일이 특정 하위 폴더에 업로드되고 플랫하지 않기 때문에).
  • 웹 응용 프로그램에서 히트 한 특정 URL로, 호스트 OS에서 어떤 일이 일어나도록 트리거합니다.

이러한 방법 중 일부 또는 전부를 달성 할 수 있는지는 알 수 없습니다.

+1

스택 오버플로는 프로그래밍 및 개발 관련 질문에 대한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제와는 거리가 먼 것처럼 보입니다. 도움말 센터에서 [여기에서 내가 질문 할 수있는 항목은 무엇입니까?] (http://stackoverflow.com/help/on-topic)를 참조하십시오. 아마도 [Super User] (http://superuser.com/) 나 [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/)가 더 나은 곳이 될 것입니다. – jww

답변

0

메시지/작업 대기열은 어떻습니까? 간단히하기 위해 RabbitMQ 대신 Redis의 PubSub 기능을 사용하고 Redis의 포트가 노드 이미지와 호스트에 모두 노출 된 상태에서 Redis를 실행하는 다른 Docker 이미지를 만들 수 있습니다. 그런 다음 Node는 Redis에 파일 업로드와 관련된 메시지를 쓸 수 있으며 호스트의 작업자/수신기는 메시지를 처리 ​​할 수 ​​있습니다. 다시보고하기 위해 반대 방향으로 비슷한 접근 방식을 사용할 수 있습니다. 즉, 호스트의 작업자가 이미지의 작업자가 사용하는 (다른) Redis 채널에 쓰는 것입니다.