首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法分配所请求的地址(localhost:xxxx) - Docker + Linux容器

无法分配所请求的地址(localhost:xxxx) - Docker + Linux容器
EN

Stack Overflow用户
提问于 2021-02-16 23:34:19
回答 1查看 16.7K关注 0票数 8

我们有一个WPF应用程序,它将调用一个名为API-1的Web,该API正在一个码头容器中运行。我还有另一个名为API-2的API,它也运行在一个码头上,但却是一个不同的容器。

每当API-1调用发生在应用程序中时,API-1将执行一些逻辑操作,并尝试对API-2执行post请求。

现在,我的问题是,对API-2的post请求总是返回不能分配请求的地址(localhost:XXXX)

如果我不去码头的话,就没问题了。另外,对每个API的单独请求都很好(使用POSTMAN)。

只有当API部署在对接程序中时,才会出现此问题。我是用坞-合成来创建容器的。我已经创建了一个对接者网络桥,并将它分配给了docker-come.yml文件中的各个API。

这是我的docker -复合文件以及两个API的docker文件。

Docker-Compose.yml

代码语言:javascript
复制
version: "3.7"

networks : 
  localdev:
    name: localdev
    external: true

services:
  api-01:
    build:
      context: .
      dockerfile: api-01/Dockerfile
    restart: always
    container_name: "api-01"
    ports:
       - "8082:80"
    environment:
      ASPNETCORE_ENVIRONMENT: "Development"
    networks:
     - localdev

  api-02:
    build:
      context: .
      dockerfile: api-02/Dockerfile
    restart: always
    container_name: "api-02"
    ports:
       - "8083:80"
    environment:
      ASPNETCORE_ENVIRONMENT: "Development"
    networks:
     - localdev

DockerFile(API-1)

代码语言:javascript
复制
FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["api-01/api-01.csproj", "api-01/"]
COPY ["CommonEntities/CommonEntities.csproj", "CommonEntities/"]
RUN dotnet restore "api-01/api-01.csproj"
COPY . .
WORKDIR "/src/api-01"
RUN dotnet build "api-01.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "api-01.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "api-01.dll"]

DockerFile(API-2)

从mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim作为基本WORKDIR /app公开80

代码语言:javascript
复制
FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["api-02/api-02.csproj", "api-02/"]
COPY ["CommonEntities/CommonEntities.csproj", "CommonEntities/"]
RUN dotnet restore "api-02/api-02.csproj"
COPY . .
WORKDIR "/src/api-02"
RUN dotnet build "api-02.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "api-02.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "api-02.dll"]

我不知道我在这里错过了什么!我从互联网上尝试了大部分解决方案,但都没有效果。

EN

回答 1

Stack Overflow用户

发布于 2021-02-17 19:14:26

如果我想在两个不同的容器中进行两个API之间的通信,我需要使用{DOCKER_IP}而不是"localhost“。

在我将post请求更改为"http://{My_PC_IP_Address}:8082"“之后,请求成功了。

感谢大卫将我重定向到正确的文档https://docs.docker.com/network/bridge/

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66233698

复制
相关文章

相似问题

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