Docker部署的.NET 8 API无法访问,排查基础问题后仍未解决
问题:Docker容器内的.NET API无法通过浏览器访问
我成功构建了Docker镜像:
sudo docker build -t meicrosoft-billing-api -f src/Meicrosoft.Billing.API/Dockerfile . --no-cache
随后使用以下命令运行容器:
sudo docker run -d -e ConnectionStrings__OrderConnection="Server=[::1];Database=MeicrosoftBilling;User id=sa;Password=...;TrustServerCertificate=True" \ -p 8080:8080 \ meicrosoft-billing-api:latest
Dockerfile内容:
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base USER app WORKDIR /app EXPOSE 8080 EXPOSE 8081 FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build ARG BUILD_CONFIGURATION=Release WORKDIR /src COPY ["src/Meicrosoft.Billing.API/Meicrosoft.Billing.API.csproj", "src/Meicrosoft.Billing.API/"] COPY ["src/Meicrosoft.Billing.Application/Meicrosoft.Billing.Application.csproj", "src/Meicrosoft.Billing.Application/"] COPY ["src/Meicrosoft.Billing.Domain/Meicrosoft.Billing.Domain.csproj", "src/Meicrosoft.Billing.Domain/"] COPY ["src/Meicrosoft.Billing.Infra.CrossCutting/Meicrosoft.Billing.Infra.CrossCutting.csproj", "src/Meicrosoft.Billing.Infra.CrossCutting/"] COPY ["src/Meicrosoft.Billing.Infra/Meicrosoft.Billing.Infra.csproj", "src/Meicrosoft.Billing.Infra/"] RUN dotnet restore "./src/Meicrosoft.Billing.API/./Meicrosoft.Billing.API.csproj" COPY . . WORKDIR "/src/src/Meicrosoft.Billing.API" RUN dotnet build "./Meicrosoft.Billing.API.csproj" -c $BUILD_CONFIGURATION -o /app/build FROM build AS publish ARG BUILD_CONFIGURATION=Release RUN dotnet publish "./Meicrosoft.Billing.API.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "Meicrosoft.Billing.API.dll"]
容器运行状态显示正常,但浏览器无法访问,提示页面无法加载。执行docker ps查看结果:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES container_id meicrosoft-billing-api:latest "dotnet Meicrosoft.B…" 5 minutes ago Up 5 minutes 8080-8081/tcp, 0.0.0.0:8080->80/tcp, :::8080->80/tcp vibrant_aryabhata
我已确认端口未被占用,尝试过无缓存重新构建镜像、重建容器,访问localhost:8080和localhost:8081均无效。容器日志显示API已启动并监听:
info: Microsoft.Hosting.Lifetime[14] Now listening on: http://[::]:8080 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Production info: Microsoft.Hosting.Lifetime[0] Content root path: /app
请问我遗漏了什么配置?恳请指导。
内容的提问来源于stack exchange,提问作者Nome Sobrenome
相关产品推荐
相关产品推荐

