【发布时间】:2018-02-14 15:51:44
【问题描述】:
这是一个相当基本的问题。微软到处宣传lift and shift approach,这意味着您可以将旧的 ASP.NET MVC 项目(云服务 Webroles)移动到 Docker 容器中,以便在 Service Fabric (SF) 上首次发布,然后再将它们转换为原生 ASP.NET Core。
不幸的是,没有一个完整的描述如何做到这一点:
- First example Lift and Shift:微软将旧 Web 项目放入容器的主要广告。但是他们只使用了一些特殊的“持续交付”方法来发布,这并没有帮助。
- Approach with VS Docker Compose support:只有如何将单个容器发布为自包含应用程序。但它不允许将容器与其他服务一起嵌入到整个 SF 项目中。此外,它不适用于 1 中创建的 Docker-Compose。1 在我的机器上执行,可以发送到集群并以某种方式在集群上执行。但是仍然无法从外部访问 Web 应用。
- Tutorial how to containerize and include container into SF Solution:将容器包含在解决方案中的正确方向。不幸的是,他们容器化的 Web 项目并不是一个完整的 ASP.NET Web 项目。它只是一个 python 脚本。因此,在这种情况下,他们可以轻松创建 docker 文件。
- ASP.Net Core Docker Tutorial from the Docker docs:这里解释了如何创建一个容器,比单个 python 脚本更复杂。但是,本教程仅以 ASP.NET Core 项目为特色,并使用原始 ASP.NET 中不存在的“dotnet publish”指令!?
- 不幸的是,所有其他将 ASP.NET MVC 应用程序从旧云服务迁移到 SF 的教程只是解释了立即升级到 ASP.NET Core(例如Here 和 here)
我迷路了。我认为策略应该是编写一个自己的 docker 文件并像 4 中那样手动创建一个容器,然后按照 3 将该容器嵌入到 SF 解决方案中。最后的问题是:如何编写 Dockerfile 来容器化 ASP.NET MVC 项目?
【问题讨论】:
-
更让我困惑的是:在 Visual Studio 中有所有这些教程,甚至还有本机 docker-compose 支持,而 docker-file 会自动创建。但是还是不能用……
-
youtube.com/watch?v=LgKGLT-OL1E。该视频可能会有所帮助。此处,此人在容器中托管 asp.net 应用程序,并将容器托管在 Azure VM 中。
标签: asp.net azure-service-fabric docker-container