在定义的端口上运行RC2项目

好的,我创build了空的RC2项目,并使用VS 2015在本地运行。

现在我想使用docker将其部署到linux服务器 – 那么我的dockerfile应该如何查看? 我一直在按照这些说明 ,这就是我最终的结果:

FROM microsoft/dotnet:1.0.0-preview1 COPY . /app WORKDIR /app RUN dotnet restore EXPOSE 5004 ENTRYPOINT dotnet run 

然后我build立我的应用程序的形象: dockerbuild设-t my_app。

并使用以下命令运行: docker run -t -p 8080:5004 my_app

之后,我得到了图像正在运行的信息,它正在localhost:5000上侦听。 不幸的是,我一直试图用xxxx:5000,xxxx:5004和xxxx:8080连接到这个服务器,并且这些地址都没有工作(xxxx是服务器地址)。

难道我做错了什么?

您可以使用UseUrls()扩展方法告诉UseUrls()要监听的端口,如下所示:

(这通常在我的Program.Main()入口点方法)

 var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseUrls("http://0.0.0.0:5004") .Build(); host.Run(); 

在这种情况下,你可以像这样运行docker镜像:

 $ docker run -d -p 8080:5004 my_app 

我select-d选项作为守护进程运行。 只要确保Dockerfile中的EXPOSED端口与UseUrls中指定的端口相匹配UseUrls 。 有关完整的示例,请随时查看我的github示例项目: https : //github.com/mw007/adventure-works

您也可以在Dockerfile级别指定Urls(如果要重新使用Container,则更好)。 这里是完整的Dockerfile:

 FROM microsoft/dotnet RUN printf "deb http://ftp.us.debian.org/debian jessie main\n" >> /etc/apt/sources.list COPY . /app WORKDIR /app RUN ["dotnet", "restore"] RUN ["dotnet", "build"] EXPOSE 5000/tcp ENTRYPOINT ["dotnet", "run", "--server.urls=http://0.0.0.0:5000"] 

您还需要修改Program.cs文件以从主参数中读取configuration:

  public static void Main(string[] args) { var config = new ConfigurationBuilder() .AddCommandLine(args) .AddEnvironmentVariables(prefix: "ASPNETCORE_") .Build(); var host = new WebHostBuilder() .UseConfiguration(config) .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build(); host.Run(); } 

你有一步一步的教程,为什么在这个博客文章: https : //www.sesispla.net/blog/language/en/2016/05/running-asp-net-core-1-0-rc2-在-泊坞窗/