微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Elastic Beanstalk上使用Docker部署.NET Core Web API

我想部署一个最低限度的testing使用Docker到Elastic Beanstalk的.NET Core Web API没有任何成功。

代码

我在Visual Studio中创build了一个全新的.NET Core Web API项目,并且保留了生成的示例代码。 之后,我添加一个Dockerfile到以下内容的项目的根目录:

FROM microsoft/dotnet:onbuild EXPOSE 5000

为了您的好奇,下面是一个到.net docker repo的链接

之后,我在项目的根目录下创build了一个hosting.json文件。 我想将Kestrel服务器绑定到容器的所有IP地址。 hosting.json文件具有以下内容

如何为Windows上的任务栏创build工具栏?

将Windows应用程序保持在其他窗口之上并保持焦点 – 始终如一

如何使用与Explorer相同的选项创build上下文菜单

修改现有的访问控制条目

Bonjour COM库在哪里?

{ "urls": "http://*:5000" }

为了确保应用程序正在加载该configuration文件,我将Main方法更改为:

public static void Main(string[] args) { var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("hosting.json",optional: false) .Build(); var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .UseConfiguration(config) .Build(); host.Run(); }

如果需要,以下是有关hosting.json文件的文档 。

最后,即使根据AWS文档我不需要它,我在项目的根目录中创build了一个Dockerrun.aws.json ,其中包含以下内容

{ "AWSEBDockerrunVersion": "1" }

所有这些在我的本地机器上运行得很好。 我已经运行它使用以下命令:

docker build -t netcore . docker run --rm -itp 5000:5000 netcore

我已经通过在浏览器中访问url http://localhost:5000/api/values来validation它的工作原理。 它产生了预期的结果!

AWS

现在为了将其部署到Elastic Beanstalk,我将整个源代码归档为Dockerfile和Dockerrun.aws.json 。 ZIP文件中的根目录如下所示:

Controllers/ Properties/ wwwroot/ appsettings.json Dockerfile Dockerrun.aws.json hosting.json Program.cs project.json project.json.lock Startup.cs web.config

但是, 使用单个Docker容器单实例环境将此源包部署到Elastic Beanstalk时,会生成以下错误No Docker image specified in either Dockerfile or Dockerrun.aws.json. Abort deployment. No Docker image specified in either Dockerfile or Dockerrun.aws.json. Abort deployment.

我究竟做错了什么? 我如何得到这个工作?

当ReadOnly = false时,性能计数器显示不同的值

从.NET应用程序login到Windows

无法加载可执行文件

无法通过C#连接到ManagementScope。 拒绝访问

在Ubuntu 16.04上运行简单的.Net Core MVC应用程序时发生内部服务器错误

所以这些都是在Windows机器上开发的,也就是Windows行结尾 ,看起来Elastic Beanstalk没有检测到。 这就解释了为什么Elastic Beanstalk无法FROM <image>我的Dockerfile解析FROM <image> ,因为有不需要的乱码,所以错误消息No Docker image specified...

我希望这被发现和修复!

在此期间,我正在使用Visual Studio插件Line Endings Unifier ,它使我可以右键单击该文件并将行结束更改为我想要的任何类型。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐