【问题标题】:Deploying an ASP.NET Core Application with a database that is on a docker container使用 docker 容器上的数据库部署 ASP.NET Core 应用程序
【发布时间】:2020-03-31 15:16:56
【问题描述】:

我已经构建了一个 ASP.NET Core Web 应用程序,该应用程序的数据库连接到我想部署到网络的 docker 容器,使其可以在任何计算机或移动设备上使用网络浏览器中的 url 访问。

这是我的应用程序 appsettings.json 代码:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "default": "Server=localhost,9999;Database=dbweb;User Id=sa; Password=Dbwebsql1234;MultipleActiveResultSets=true"
  }
}

到目前为止,该应用程序仅通过此 url 在 localhost 上运行:https://localhost:5001/,其数据库连接到名为 dbweb 的 docker 容器,该容器使用 mssql-server-linux:latest 映像。它的docker端口是1433:和(MAC IP:Port)是9999。数据库在本地运行,当我通过Azure连接到它时,服务器名称是“localhost,9999”。尽管在线搜索了许多资源,并查看了有关此主题的类似问题,但我无法找到部署我的应用程序的明确解决方案。我想知道是否有必要创建一个 linode linux 服务器或任何远程服务器,通过终端上的 ssh 连接到该服务器,并在该服务器上为我的数据库创建一个新的 docker 容器,以及克隆 web 应用程序源从 github 到远程服务器的代码仓库。为我的应用程序将连接到的 sqlserver 创建另一个托管 docker 容器的 vm 服务器会更好,还是有更好的方法?我打算使用 nginx 在远程 vm 服务器上托管我的应用程序。顺便说一句,我在 Mac OS 上。我正在寻找一种更简单的方法来简化部署过程。谢谢。

【问题讨论】:

    标签: c# json docker asp.net-core deployment


    【解决方案1】:

    您可以通过多种方式实现您的目标。

    选项a:

    如果您想完全控制您的服务器基础架构(CPU、RAM、内存),请使用 Azure 的 IaaS 产品。 1. 使用所需的操作系统创建 Azure 虚拟机 2.安装asp.net core web app托管服务器,打包你的应用,配置托管服务器,部署包 3. 安装 Docker 4. 在 AZ VM 中创建一个映像,就像在本地为 MS sql 服务器所做的一样,并运行容器 5. 创建一个公共 IP 以通过 Internet 连接您的 VM,并使用 FQDN 配置 DNS。

    选项 b:

    a) Azure 的 PaaS - 托管您的 asp.net 核心 Web 应用程序的应用程序服务 [无需维护操作系统/托管服务器 + 您可以在 linux/Windows 操作系统之间进行选择。完全由 Azure 管理] 和

    b) PaaS - 用于您的数据库/数据库服务器的 ACI(Azure 容器实例)[在 ACI 中,无需维护操作系统或 Docker。它完全由 Azure 管理]。

    此外,ACI 提供公共 IP 和标有 FQDN(完全限定域名)的 DNS,您可以在 Web 应用程序的连接字符串中将其用作数据库服务器名称。您可以使用它从本地计算机通过 SSMS 或 Azure Data Studio 连接到您的数据库,以直接检查您的数据。

    注意:ACI 需要将 docker 映像存储在注册表中(DockerHub / Azure 容器注册表 / 私有注册表)

    一步一步的良好指导的起点在

    ACI: https://www.mssqltips.com/sqlservertip/6180/create-azure-container-instances-for-sql-server/

    https://www.mssqltips.com/sqlservertip/6262/connect-to-and-monitor-sql-server-azure-container-instances-aci/

    https://github.com/dotnet-architecture/eShopModernizing/wiki/05.-Deploying-the-Apps-to-ACI-(Azure-Container-Instances)

    应用服务: https://docs.microsoft.com/en-us/visualstudio/mac/publish-app-svc?toc=%2Faspnet%2Fcore%2Ftoc.json&bc=%2Faspnet%2Fcore%2Fbreadcrumb%2Ftoc.json&view=vsmac-2019&viewFallbackFrom=aspnetcore-3.1

    设置初始配置后,您可以通过 Azure DevOps 加快部署 (CI/CD)。

    https://azure.microsoft.com/en-us/solutions/devops/

    【讨论】:

      猜你喜欢
      • 2021-10-29
      • 1970-01-01
      • 2023-03-15
      • 2017-05-25
      • 2019-11-05
      • 2018-11-07
      • 2017-02-19
      • 1970-01-01
      • 2019-01-21
      相关资源
      最近更新 更多