【发布时间】:2020-02-26 16:46:09
【问题描述】:
我已经使用 docker compose 文件(预览版)在 Azure 中部署了多容器应用服务。
web 应用程序公开了 80 端口,所以如果我转到 https://myproj.azurewebsites.net/,就会显示 web 应用程序(它是唯一可用的公共端口)。
我现在想做的是能够从网络向我的 api 发送一个 http 请求,这是另一个内部托管的容器。我尝试了不同的网址,但我无法成功提出请求。 api容器启动成功所以没有什么问题,只是不知道用哪个地址。
OrderApi Dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["MyProj.OrderApi/MyProj.OrderApi.csproj", "MyProj.OrderApi/"]
COPY ["nuget.config", "MyProj.OrderApi/"]
RUN dotnet restore "v.OrderApi/MyProj.OrderApi.csproj" --configfile "MyProj.OrderApi/nuget.config"
RUN rm "MyProj.OrderApi/nuget.config"
COPY . .
WORKDIR "/src/MyProj.OrderApi"
RUN dotnet build "MyProj.OrderApi.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "MyProj.OrderApi.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "MyProj.OrderApi.dll"]
生产环境中使用的 Docker 组合文件 (Azure)
version: '3.4'
services:
web:
image: myproj.azurecr.io/myproj/web
ports:
- '80:80'
orderapi:
image: myproj.azurecr.io/myproj/orderapi
端点测试
https://localhost/orderapi/api - ERR_CONNECTION_REFUSED
http://localhost/orderapi/api - 被 CORS 策略阻止(我确定在 api 中正确配置了 cors)
https://host.docker.internal/orderapi/api - ERR_CONNECTION_TIMED_OUT
orderapi/api - 将当前站点添加为 baseurl.. 尝试发送请求到 https://mysite.azurewebsites.net/orderapi/api
http://host.docker.internal/orderapi/api - 此请求已被阻止;内容必须通过 HTTPS 提供
host.docker.internal/orderapi/api - 将当前站点添加为 baseurl.. 尝试发送请求到 https://mysite.azurewebsites.net/host.docker.internal/orderapi/api
【问题讨论】:
标签: c# azure docker .net-core docker-compose