【发布时间】:2019-05-17 21:41:14
【问题描述】:
我正在尝试将 ASP.Net Core 应用程序容器化,但在让容器响应配置和映射端口上的请求时遇到问题。
在 IIS 或 IISExpress 中本地运行时,应用程序按预期运行。
镜像构建并且容器运行。一切似乎都可以正常工作,但对http://localhost:49274 的请求总是导致无响应/超时。
此 Dockerfile 基于 Microsoft ASP.Net Core Docker 示例应用程序 - https://github.com/dotnet/dotnet-docker/blob/master/samples/aspnetapp/Dockerfile。示例应用映像运行正常。
我做错了什么?
Dockerfile
FROM mcr.microsoft.com/dotnet/core/sdk:2.1 AS build
WORKDIR /app
# copy csproj and restore as distinct layers
COPY *.sln .
COPY src/Auth.Provider/*.csproj ./src/Auth.Provider/
RUN dotnet restore "src/Auth.Provider/Auth.Provider.csproj"
# copy everything else and build app
COPY src/Auth.Provider/. ./src/Auth.Provider/
WORKDIR /app/src/Auth.Provider
RUN dotnet publish -c Release -o out
FROM mcr.microsoft.com/dotnet/core/aspnet:2.1 AS runtime
WORKDIR /app
COPY --from=build /app/src/Auth.Provider/out ./
ENTRYPOINT ["dotnet", "Auth.Provider.dll"]
我还尝试将以下命令添加到 Dockerfile:
EXPOSE 49274/tcp
ENV ASPNETCORE_URLS http://*:49274
docker 容器运行命令:
docker run -it -p 49274:49274 --name auth.provider auth.provider:1.0 cmd
测试端口的尝试也失败了:
Test-NetConnection -ComputerName "localhost" -Port 8080
应用初始化:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((hostingContext, logging) =>
{
logging.ClearProviders();
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") != EnvironmentName.Development)
{
return;
}
logging.AddDebug();
logging.AddConsole();
})
.UseNLog()
.UseKestrel()
.UseUrls("http://localhost:49274")
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>();
}
【问题讨论】:
标签: docker asp.net-core dockerfile