我有一个安装了 ClamAV 的主机操作系统 (Ubuntu)。我正在这个操作系统上运行 Docker 容器。该容器正在运行一个面向公众的 Node Web 应用程序。
此 Web 应用程序中有文件上传功能,可上传到 docker 容器内的文件夹。
此文件夹已“安装”,以便可以从主机操作系统访问它。
需要扫描病毒,然后需要向 Docker 容器应用程序报告扫描结果。然后,这些结果将被处理并转发给用户。
让主机操作系统知道文件何时上传到此文件夹的最佳方式是什么?
我想到的方法是:
- 主机操作系统轮询文件夹以检查是否发生更改(不可取)。
- 网络应用程序触发一些 Docker“事件”(或类似事件)来告诉主机操作系统扫描特定的子文件夹(因为文件将上传到特定的子文件夹并且不会是扁平的)。
- 在网络应用上点击的特定 URL,然后在主机操作系统以某种方式监听时触发某些操作。
不知道是否有,或者所有这些方法都可以实现。
最佳答案
消息/作业队列怎么样?为了简单起见,可以使用 Redis 的 PubSub 功能(而不是 RabbitMQ 等)并创建另一个运行 Redis 的 Docker 镜像,并将 Redis 的端口暴露给 Node 镜像和主机。然后,Node 可以编写一条有关将文件上传到 Redis 的消息,然后主机上的工作程序/监听器可以处理该消息。为了报告回来,可以在相反的方向使用类似的方法,即主机上的工作人员写入(另一个)Redis channel ,图像中的工作人员使用该 channel 。
关于node.js - 从 Docker 容器 Web 应用程序内部触发主机操作系统上的事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46665118/