繁体   English   中英

在连接到主机Node app的AWS ELB上运行Docker容器

[英]Running a Docker Container on AWS ELB, connected to the host Node app

我想要做的事情有两个:一,在我的Elastic Beanstalk环境中运行一个Docker容器(最好是从Dockerfile创建,而不是从映像中拉出),该环境已经在生产环境中运行了Node应用程序。 然后,将两者连接在一起,以便可以通过主机上的localhost访问我的服务器(在Docker容器上运行)。 这样做的最终目标是允许两者通过TCP进行通信,但是我已经弄清楚了没有Dockeriziation的情况。

据我所知,AWS为单容器Docker应用提供了一个选项。 但是,我不清楚它是针对仅在Docker上运行的应用程序还是像我的场景。 从我读到的内容来看,我倾向于前者。

因此,我唯一的选择是将Docker作为软件包手动安装在我的实例上,作为服务运行,并以这种方式从Dockerfile构建和运行吗? 似乎是回旋处,我相信我之前曾尝试过,但收效有限-但是,如果那是最好的道路,那就是我会尝试的方法!

谢谢你们给我的任何帮助。 将接受给出可行解决方案的第一个答案。

在这种情况下,您将需要将现有的Node应用程序打包在Docker容器中,然后使用ELB Multi Container Docker环境在容器中运行这两个应用程序。

您将需要将两个容器都存储在私有或公共注册表中。 要充分利用AWS注册表服务遵循指示文章。 然后,您可以在EB环境的Dockerrun.aws.json文件中引用您的容器。

为了允许容器彼此通信,请在Dockerrun.aws.json文件中包括指向其他​​容器的“链接”:

{
  "AWSEBDockerrunVersion": 2,
  "containerDefinitions": [
    {
      "name": "my-node-app",
      "image": "registry:my-node-app",
      "essential": true,
    {
      "name": "other-container",
      "image": "registry:other-container",
      "essential": true,
      "portMappings": [
        {
          "hostPort": 80,
          "containerPort": 80
        }
      ],
      "links": [
        "my-node-app"
      ]
    }
  ]
}

在这种情况下,Docker通过主机名“ my-node-app”将您的节点容器公开给另一个容器(这是Dockerrun文件的缩写,仅供参考)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM