不能访问我的Docker DotNet核心网站

我已经跑到死胡同了。 我有一个dotnet核心1.0.0应用程序,我试图启动和运行。 它从Linux和Windows的伟大作品。 现在我正试图把它放到docker。 我已经做了这个docker文件:

FROM microsoft/dotnet:1.0.0-preview2-sdk COPY . /app WORKDIR /app/app RUN ["dotnet", "restore"] ENTRYPOINT ["dotnet", "run"] 

它只是简单地将代码复制到Docker镜像中的应用程序文件夹中并恢复依赖关系,然后运行它。 当我尝试运行它时,它启动,因为一切正常,并打印相同,因为它是在Windows或Linux启动。

Docker控制台

运行该项目的命令:

 docker run --name dotNetWeb -p 8080:8080 kiksen1987/dotnetcore 

链接到代码: https : //github.com/kiksen1987/dotnetcore

链接到Docker镜像: https : //hub.docker.com/r/kiksen1987/dotnetcore/

我真的不知道什么是错的。 我或多或less采取了与其他项目99%相同的方法。

任何反馈来改善这个问题将是不错的:)

最后。

我发现这个博客文章: http : //dotnetliberty.com/index.php/2015/11/26/asp-net-5-on-aws-ec2-container-service-in-10-steps/

尽pipe它使用了旧版本的dotnet核心,但是我曾经监督过一个重要的观点:

请注意,我为dnx web命令提供了一个额外的参数,告诉它在0.0.0.0(而不是默认的本地主机)上提供服务。 这将允许我们的Web应用程序处理来自Docker提供的端口转发的请求,默认为0.0.0.0。

这是非常重要的。

解:

 var host = new WebHostBuilder() .UseKestrel() .UseStartup<Startup>() .UseUrls("http://0.0.0.0:5000") .Build(); 

旧代码:

 var host = new WebHostBuilder() .UseKestrel() .UseStartup<Startup>() .UseUrls("http://localhost:5000") .Build(); 

这是令人沮丧,因为它似乎在Linux和Windows和应用程序启动在Docker中完美,但从来没有得到任何请求。 希望这有助于其他一些可怜的灵魂:)

您可以在这里find一些有用的信息来build立一个自定义的图像与ASP.NET Core和Docker: https : //hahoangv.wordpress.com/2016/05/23/asp-net-core-run-in-docker/

Dockerfile:

 FROM microsoft/dotnet:1.0.0-preview2-sdk # Set environment variables ENV ASPNETCORE_URLS="http://*:5000" ENV ASPNETCORE_ENVIRONMENT="Development" # Copy files to app directory COPY . /app # Set working directory WORKDIR /app # Restore NuGet packages RUN ["dotnet", "restore"] # Open up port EXPOSE 5000 # Run the app ENTRYPOINT ["dotnet", "run"] 

和Program.cs文件:

 public static void Main(string[] args) { // Get environment variables var config = new ConfigurationBuilder() .AddEnvironmentVariables(&quot;&quot;) .Build(); // You need to add these lines for accessing outside of Docker var url = config["ASPNETCORE_URLS"] ?? "http://*:5000"; var env = config["ASPNETCORE_ENVIRONMENT"] ?? "Development"; var host = new WebHostBuilder() .UseKestrel() .UseUrls(url) .UseEnvironment(env) .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); } 

希望这个帮助!