gpt4 book ai didi

node.js - 将请求从一个 Docker 容器发送到另一个

转载 作者:太空宇宙 更新时间:2023-11-03 23:07:47 25 4
gpt4 key购买 nike

我正在尝试将一些现有服务器移至 Docker 容器内。我有两个:一个应用程序服务器和一个 API 服务器,但使用 Node.js 开发。我让它们都在 ubuntu 虚拟机中工作,并且可以从虚拟机外部访问这两个应用程序,这很棒。

每个服务器都有自己的域。应用程序服务器使用域app,api服务器使用api域,我知道很聪明。在本地,我将两个域添加到我的主机文件中,以指向分配给 ubuntu 虚拟机的 IP。

我遇到的唯一问题是应用服务器发送的请求需要路由到 api 服务器。尝试编辑应用程序服务器容器(通过 Dockerfile)和 ubuntu 虚拟机的主机文件,但是请求失败。

有没有一种简单的方法可以让该请求不出去并尝试解析 api 域,但让它指向 api 容器?

最佳答案

对此的典型解决方案是使用 Docker 的 --link 选项来链接容器。也就是说,如果您这样做:

docker run -d --name api myapi
docker run -d --name app --link api:api myapp

然后在 app 容器中,主机名 api 将映射到 api 容器。您还将拥有一组可用的环境变量,用于描述链接容器上公开的端口。例如,如果您的“api”容器公开端口 80,则变量将如下所示:

API_PORT_80_TCP=tcp://172.17.0.10:80
API_PORT_80_TCP_PORT=80
API_PORT_80_TCP_PROTO=tcp
API_PORT=tcp://172.17.0.10:80
API_NAME=/app/api
API_PORT_80_TCP_ADDR=172.17.0.10

链接选项有一些缺点:

  • 这只适用于托管在同一物理主机上的容器
  • 如果重新启动“api”容器,则还必须重新启动“app”容器。

如果您在多主机环境中操作,这两个特定问题都可以通过您选择的编排工具来解决。

关于node.js - 将请求从一个 Docker 容器发送到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28570954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com