我有一个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,然后将数据移动到我的另一个容器。
发布于 2022-03-30 20:20:12
经过16个小时的流血、汗水和眼泪。最重要的是眼泪,这是谁可能会在未来使用这个答案。
DR通过以下方式将本地nat网络暴露给docker-compose中的码头容器:
networks:
default:
external: true
name: nat注意,在Windows上运行docker network ls应该提供如下内容:
NETWORK ID NAME DRIVER SCOPE
6b30a7dcf6e0 Default Switch ics local
26305680ad62 WSL ics local
b52f5e497eba nat nat local
4a4fd550398f none null localdocker-compose只是简单地连接到主机网络(在计算机重新启动之后自动重新启动容器所必需的,但非主题)。
之后,我不得不运行一个ipconfig来找到与我的nat端口相对应的IPv4端口。在这里,可以有许多IPv4 IP地址,可以找到一个写着Ethernet adapter vEthernet (nat)的地址。
然后,对运行在本地计算机上的任何应用程序使用与nat网络相对应的nat。
例如,我的应用程序运行在localhost:8002上。在这里,我把我的主机改成了http://172.31.160.1:8002,它起了作用。
https://stackoverflow.com/questions/71668469
复制相似问题