繁体   English   中英

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

[英]Deploying a .NET Core Web API using Docker on Elastic Beanstalk

我正在尝试使用Docker将最初的.NET Core Web API部署到Elastic Beanstalk,但没有任何成功。


源代码

我在Visual Studio中创建了一个全新的.NET Core Web API项目,并保持生成的示例代码不变。 之后,我将Dockerfile添加到项目的根目录,其中包含以下内容:

FROM microsoft/dotnet:onbuild

EXPOSE 5000

为了您的好奇心,这里是.NET docker repo的链接

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

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

为了确保应用程序正在加载该配置文件,我将我的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文档不需要它我在项目的根目录中创建了一个Dockerrun.aws.json ,其中包含以下内容:

{
    "AWSEBDockerrunVersion": "1"
}

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

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

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


AWS

现在,为了将它部署到Elastic Beanstalk,我已经使用DockerfileDockerrun.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.


我究竟做错了什么? 我如何让它工作?

所以这一切都是在Windows机器上开发的,即Windows系列结尾 ,似乎Elastic Beanstalk没有检测到它。 这就解释了为什么Elastic Beanstalk无法解析我的DockerfileFROM <image> ,因为存在不必要的乱码,因此错误消息No Docker image specified...

我希望这会被注意到并修复!

与此同时,我正在使用Visual Studio插件Line Endings Unifier ,这使我能够右键单击该文件并将行结尾更改为我想要的任何类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM