docker - ASP.NET Core 微服务
问题描述
我正在使用 docker 和 asp.net core 2 创建微服务。我创建了 2 个微服务和一个 web api。我正在尝试使用 HttpClient 从 Web api 调用微服务端点。下面是 web api 控制器代码
[HttpGet]
public async Task<IEnumerable<string>> GetAsync()
{
var client = new HttpClient();
var data = await client.GetAsync("http://localhost:8081/api/values");
return new string[] { "apigateway-value1", "apigateway-value2" };
}
这是我的 docker-compose.yml 文件,其中指定了我要调用的微服务。
microserviceone:
image: ${DOCKER_REGISTRY}microserviceone
build:
context: .
dockerfile: MicroserviceOne/Dockerfile
ports:
- "8082:80"
这是微服务 Dockerfile
FROM microsoft/aspnetcore:2.0 AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/aspnetcore-build:2.0 AS build
WORKDIR /src
COPY MicroserviceOne/MicroserviceOne.csproj MicroserviceOne/
RUN dotnet restore MicroserviceOne/MicroserviceOne.csproj
COPY . .
WORKDIR /src/MicroserviceOne
RUN dotnet build MicroserviceOne.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish MicroserviceOne.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "MicroserviceOne.dll"]
问题是我收到错误“System.Net.Http.CurlException:无法连接到服务器”。如果我尝试使用命令访问同一端点,则从命令提示符
curl -X GET -H Content-Type: application/json http://localhost:808/api/values
我正在获取数据。我真的不知道发生了什么。
解决方案
您可以尝试使用主机名/IP 地址而不是 localhost。'localhost' 代表当前容器。
推荐阅读
- wpf - 程序的 Windows 任务栏中应显示哪些窗口?
- freemarker - 在 Freemarker 中更改输出日期格式,而与输入格式无关
- hyperledger-fabric - 连接客户端peer失败,请检查配置和peer状态
- swift - 快速格式化时间(iOS)
- php - 用php检测png图像的背景颜色是否为灰色
- mongodb - 将 mongodb 4.0 与 robomongo 连接
- r - If lattice in function
- r - 如何在 R 中将值列表 (x,y,value) 转换为 2D 矩阵
- python - Kivy ui 在 RPI 上非常慢
- siebel - 可以在 siebel 清单中添加 2 个 PR