Windows 在Elastic Beanstalk上使用Docker部署.NET核心Web API

Windows 在Elastic Beanstalk上使用Docker部署.NET核心Web API,windows,amazon-web-services,docker,amazon-elastic-beanstalk,.net-core,Windows,Amazon Web Services,Docker,Amazon Elastic Beanstalk,.net Core,我正在尝试使用Docker到Elastic Beanstalk部署一个最低限度的测试.NET核心Web API,但没有成功 源代码 我在VisualStudio中创建了一个全新的.NET核心Web API项目,生成的示例代码保持不变。之后,我在项目的根目录中添加了一个Dockerfile,内容如下: FROM microsoft/dotnet:onbuild EXPOSE 5000 { "urls": "http://*:5000" } { "AWSEBDockerrun

我正在尝试使用Docker到Elastic Beanstalk部署一个最低限度的测试.NET核心Web API,但没有成功


源代码 我在VisualStudio中创建了一个全新的.NET核心Web API项目,生成的示例代码保持不变。之后,我在项目的根目录中添加了一个
Dockerfile
,内容如下:

FROM microsoft/dotnet:onbuild

EXPOSE 5000
{
    "urls": "http://*:5000"
}
{
    "AWSEBDockerrunVersion": "1"
}

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

FROM microsoft/dotnet:onbuild

EXPOSE 5000
{
    "urls": "http://*:5000"
}
{
    "AWSEBDockerrunVersion": "1"
}
为了确保应用程序正在加载该配置文件,我将我的
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();
}
所有这些在我本地的机器上都运行得很好。我已使用以下命令运行它:

docker build -t netcore .
docker run --rm -itp 5000:5000 netcore
我通过访问url
http://localhost:5000/api/values
在我的浏览器中。它产生了预期的结果


自动气象站 现在,为了将其部署到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会产生以下错误
Dockerfile或Dockerrun.aws.json中未指定Docker映像。中止部署。



我做错了什么?我怎样才能让它工作呢?

所以这都是在Windows机器上开发的,也就是说,Windows行结束符,而Elastic Beanstalk似乎没有检测到这一点。这就解释了为什么Elastic Beanstalk无法从我的
Dockerfile
中解析
,因为存在不需要的乱码,因此出现错误消息
未指定Docker映像…

我希望这一点得到注意和修复


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

再过几个小时,我仍然无法实现这一点。我确信我所做的有点不对劲,但有一件事是肯定的;错误消息完全不正确。显然有一个Docker图像指定。。。现在,如果只有消息可以指示实际的错误,那么如果您使用的是eb cli,它使用的是git钩子,那么您可以通过让“谢谢您的提示”来解决这个问题!我将对此进行调查:)