【发布时间】:2018-03-04 09:36:32
【问题描述】:
我要做的是双重的:第一,在我的 Elastic Beanstalk 环境中运行一个 Docker 容器(最好从 Dockerfile 创建,而不是从图像中提取),该环境已经在生产中运行了一个 Node 应用程序。然后,将两者连接在一起,以便可以通过主机上的 localhost 访问我的服务器(在 Docker 容器上运行)。这样做的最终目标是允许两者通过 TCP 进行通信,但我已经知道没有 Dockeriziation。
据我所知,AWS 有一个用于单容器 Docker 应用程序的选项;但是,我不清楚它是针对仅在 Docker 上运行的应用程序,还是像我这样的场景。根据我的阅读,我倾向于前者。
因此,我唯一的选择是在我的实例上手动安装 Docker 作为包,将其作为服务运行,然后以这种方式从 Dockerfile 构建和运行吗?这似乎相当迂回,我相信我之前尝试过,但成功有限 - 但如果这是最好的道路,那就是我会尝试的!
感谢你们能给我的任何帮助。将接受给出可行解决方案的第一个答案。
【问题讨论】:
-
为什么要通过 TCP 从宿主机连接到容器?
-
这取决于几件事。 Node 应用程序是否总是要在单个 EC2 实例上运行?会水平缩放应用程序吗?如果是,那么你为什么要使用 localhost 来访问这个 dockerized 服务,你在两者之间创建了一个不必要的联系。
-
答案很简单——我正在使用这个容器在 Python 中执行一项非常具体的任务,而这是我在 Node.js 中无法完成的任务。会有不止一个实例,但如果每个实例都有自己的容器来执行此功能,那就太好了。最终,我们计划转向完全多容器设置,这将允许我们以更传统的方式将主应用程序和此容器链接在一起。但在那之前,我们需要一种方法来将两者连接起来,以便它们可以通信,而 TCP 似乎是最简单的。
-
话虽如此,我并没有那么担心,我很确定只要暴露端口就可以解决通信方面的问题。也许不吧。但实际安装过程更让我烦恼。
标签: node.js amazon-web-services docker amazon-elastic-beanstalk