-1

我有一个安装了 ClamAV 的主机操作系统(Ubuntu)。我正在这个操作系统上运行一个 Docker 容器。此容器正在运行一个面向公众的节点 Web 应用程序。

此 Web 应用程序中有文件上传功能,可上传到 docker 容器中的文件夹。

此文件夹已“挂载”,因此可以从主机操作系统访问。

它需要进行病毒扫描,然后需要将扫描结果报告给 Docker 容器应用程序。然后将处理这些结果并将其转发给用户。

让主机操作系统知道文件何时上传到此文件夹的最佳方法是什么?

我想到的方法是:

  • 主机操作系统轮询文件夹以检查更改(不可取)。
  • Web 应用程序触发一些 Docker“事件”(或类似事件)来告诉主机操作系统扫描特定的子文件夹(因为文件将被上传到特定的子文件夹并且它不会是平面的)。
  • 在 Web 应用程序上点击的特定 URL,然后在主机操作系统上触发某些事情,因为它正在以某种方式进行侦听。

不知道是否有任何方法,或者所有这些方法都可以实现。

4

1 回答 1

0

消息/作业队列呢?为了简单起见,可以使用 Redis 的 PubSub 功能(而不是 RabbitMQ 等)并创建另一个运行 Redis 的 Docker 映像,Redis 的端口同时暴露给 Node 映像和主机。然后,Node 可以写一条关于文件上传到 Redis 的消息,然后主机上的工作人员/侦听器可以处理该消息。对于反馈,可以在相反的方向使用类似的方法,即主机上的工作人员写入(另一个)Redis 通道,映像中的工作人员使用该通道。

于 2017-10-10T13:18:14.127 回答