首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Docker容器访问主机上的API?

问如何从Docker容器访问主机上的API?
EN

Stack Overflow用户
提问于 2022-03-29 20:34:50
回答 1查看 1.1K关注 0票数 1

我有一个docker-compose,它可以编出2个码头集装箱。一个是应用程序(在port:8090上),另一个是数据库(在port:5432上)。我还有一个Windows应用程序,它可以通过localhost:8002访问一个API。我希望使用具有应用程序的容器从localhost:8002 API中读取数据,然后将该数据移动到我的另一个Docker容器中的数据库中。

对于docker-compose,我分别为数据库和应用程序容器映射了port 5432:5432和port 8090:8090。我已经测试了我的应用程序non-dockerized,在这里我调用了Windows,然后将它写到port:5432中,并且它正常工作。

但是,在对我的应用程序进行了文档化之后,localhost:8002现在不再是我的Dockerized的本地主机,现在无法访问。我想知道我如何到达我的主机localhost:8002,点击那个API,然后将数据移动到我的另一个容器。

EN

Stack Overflow用户

回答已采纳

发布于 2022-03-30 20:20:12

经过16个小时的流血、汗水和眼泪。最重要的是眼泪,这是谁可能会在未来使用这个答案。

DR通过以下方式将本地nat网络暴露给docker-compose中的码头容器:

代码语言:javascript
复制
networks:
  default:
    external: true
    name: nat

注意,在Windows上运行docker network ls应该提供如下内容:

代码语言:javascript
复制
NETWORK ID     NAME             DRIVER    SCOPE
6b30a7dcf6e0   Default Switch   ics       local
26305680ad62   WSL              ics       local
b52f5e497eba   nat              nat       local
4a4fd550398f   none             null      local

docker-compose只是简单地连接到主机网络(在计算机重新启动之后自动重新启动容器所必需的,但非主题)。

之后,我不得不运行一个ipconfig来找到与我的nat端口相对应的IPv4端口。在这里,可以有许多IPv4 IP地址,可以找到一个写着Ethernet adapter vEthernet (nat)的地址。

然后,对运行在本地计算机上的任何应用程序使用与nat网络相对应的nat。

例如,我的应用程序运行在localhost:8002上。在这里,我把我的主机改成了http://172.31.160.1:8002,它起了作用。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71668469

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档