将Web客户端连接到动态生成docker容器

时间:2017-08-03 21:23:59

标签: node.js docker nginx

我正在使用nodejs编写在线编码站点。当用户请求时,我生成一个docker容器来编译并运行他们的代码然后删除它。在少量时间后停靠并移除docker容器。

在容器内运行的可执行文件使用客户端javascript库和在双方的docker容器上打开的特定端口与客户端浏览器实时通信。 (供参考我正在使用这个javascript库http://robotwebtools.org/tools.html)这适用于单个用户。

但是,我需要一个解决方案,当有多个并发用户时,因此同时产生多个docker容器(由于多个同时请求),这些容器必须位于不同的端口上。我需要一种方法来获取客户端javascript代码,以便在唯一端口上与相应的docker容器进行通信。注意我正在寻找一台机器上数十个并发用户的解决方案,而不是大规模扩展。我可以想到两种方法。

(A)打开一些公共端口,让nodejs生成具有唯一端口的docker容器,将此唯一端口发送到客户端代码。我认为这样可行并且相当容易实现。我不认为安全性会成为一个问题,因为容器只是短暂连接到端口。但是,有什么我忘记了吗?

(B)只打开一个公共端口,让nodejs生成具有唯一端口的docker容器,并让nodejs监听公共客户端端口并根据某个用户ID转发到正确的docker容器端口?我甚至不确定如何在nodejs中执行此操作?有什么我可以用来做这件事吗?

这些都适合吗?还是有其他解决方案吗?如果B合适,我将如何识别每个用户的流。注意,如果相关,我打算使用nginx作为反向代理。

0 个答案:

没有答案