gpt4 book ai didi

docker - Docker Web应用程序无法与API应用程序通信

转载 作者:行者123 更新时间:2023-12-02 20:45:51 24 4
gpt4 key购买 nike

我在docker中运行了2个.net核心应用程序(一个是Web API,另一个是使用Web API的Web应用程序):

我似乎无法通过Web应用程序与api通信,但可以通过在浏览器中的http://localhost:44389直接转到api来访问该api

我的Web应用程序中有一个环境变量,具有相同的信息,但无法获取。

如果要在azure上指定我的API的部署版本,它就可以与该地址通信。似乎问题出在容器之间互相交谈。

我读到,创建网桥应该可以解决该问题,但事实并非如此。我究竟做错了什么?

这是我的docker compose文件:

version: '3.4'

services:
rc.api:
image: ${DOCKER_REGISTRY}rcapi
build:
context: .
dockerfile: rc.Api/Dockerfile
ports:
- "44389:80"

rc.web:
image: ${DOCKER_REGISTRY}rcweb
build:
context: .
dockerfile: rc.Web/Dockerfile
environment:
- api_endpoint=http://localhost:44389
depends_on:
- rc.api

networks:
my-net:
driver: bridge

最佳答案

docker-compose在容器之间自动创建网络。由于您的容器位于同一网络中,因此您可以使用别名在容器之间进行连接。 docker-compose使用容器名称和容器IP创建别名。所以在你的情况下docker-compose应该看起来像

version: '3.4'

services:
rc.api:
image: ${DOCKER_REGISTRY}rcapi
build:
context: .
dockerfile: rc.Api/Dockerfile
ports:
- "44389:80"

rc.web:
image: ${DOCKER_REGISTRY}rcweb
build:
context: .
dockerfile: rc.Web/Dockerfile
environment:
- api_endpoint=http://rc.api
depends_on:
- rc.api

networks:
my-net:
driver: bridge

由于 rc.api在其容器中打开端口80,因此 rc.web可以使用 http://rc.api:80http://rc.api访问80端口(无端口,因为HTTP端口默认为80)

关于docker - Docker Web应用程序无法与API应用程序通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54380543/

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