日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Windows下IIS+.net framework+Mysql接入實踐

更新時間:

本章介紹如何在Windows系統(tǒng)下,使用Docker For Windows打包Asp.Net應(yīng)用鏡像,并使用自研鏡像初始化第三方MySQL數(shù)據(jù)庫部署并運行應(yīng)用。

準備工作

1、環(huán)境準備

以下的說明都是基于Docker For Windows下打包并運行,請確保Docker運行在Windows Container模式下,設(shè)置方法:在系統(tǒng)任務(wù)欄找到Docker圖標并右鍵,打開設(shè)置對話框:image.png

注意:本例子并不適用通過Virtualbox在Widows下運行Docker應(yīng)用。另外,Docker For Windows需要運行在Win10 64bit(專業(yè)版或企業(yè)版),并確保更新到1809或以上版本。目前Iot平臺暫不支持在Windows Server系統(tǒng)打包生成的鏡像。

2、準備數(shù)據(jù)庫初始化文件

創(chuàng)建用于數(shù)據(jù)庫初始化的sql文件,在文件中寫入數(shù)據(jù)庫表的創(chuàng)建等相關(guān)初始化腳本,可以從現(xiàn)有的數(shù)據(jù)庫中直接導(dǎo)出初始化sql腳本文件來使用。腳本示例如下:

/******************************************/
/*   創(chuàng)建user數(shù)據(jù)表,并插入兩條初始化數(shù)據(jù)       */
/******************************************/
CREATE TABLE IF NOT EXISTS `user` (
 `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',
 `gmt_create` datetime NOT NULL COMMENT '創(chuàng)建時間',
 `gmt_modified` datetime NOT NULL COMMENT '修改時間',
 `name` varchar(256) NOT NULL COMMENT 'name',
 `phone` varchar(64) NOT NULL DEFAULT '' COMMENT 'phone',
  PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE utf8_general_ci COMMENT='用戶表';

INSERT INTO `user` (id, gmt_create, gmt_modified, name, phone) VALUES ('1', '2018-11-26 10:00:00', '2018-11-26 10:00:00', '測試', '1388888888');
INSERT INTO `user` (id, gmt_create, gmt_modified, name, phone) VALUES ('2', '2018-11-26 10:00:00', '2018-11-26 10:00:00', 'test', '1366666666');

3、準備Dockerfile文件

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.7.2-windowsservercore-ltsc2019
Copy aspnetdemo /inetpub/wwwroot
#增加最大內(nèi)存限制

使用微軟官方的aspnet:4.7.2鏡像作為基礎(chǔ)鏡像,該鏡像包含:

  • Windows Server Core

  • IIS 10 

  • .NET Framework (支持.Net框架多個版本,最高支持4.7.2)

  • 對 IIS 在 .NET 方面的擴展

4、約定MySQL服務(wù)器配置

為了方便起見,我們約定MySQL服務(wù)器節(jié)點相關(guān)的配置如下:

服務(wù)名稱:mysqldbsvc
數(shù)據(jù)庫:mysqlhadb
用戶名:root
密碼:123456Aa

這些配置信息可根據(jù)實際情況進行調(diào)整。稍后在配置托管應(yīng)用將會用到。另外,當我們在阿里云物聯(lián)網(wǎng)托管平臺部署成功后,這些配置信息會以環(huán)境變量的方式注入到我們的Demo應(yīng)用運行環(huán)境內(nèi)。所以,Demo的數(shù)據(jù)庫連接字符串可以這樣寫:

using System;
using System.Data;
using MySql.Data.MySqlClient;
namespace aspnetDemo.Extensions
{
    public class DbHelper
    {
        public static string strConn = string.Empty;

        static DbHelper()
        {
            string uid = Environment.GetEnvironmentVariable("IOT_HOSTING_MYSQLDBSVC_MYSQLUSER");
            string pwd = Environment.GetEnvironmentVariable("IOT_HOSTING_MYSQLDBSVC_MYSQLPASSWORD");
            string server = Environment.GetEnvironmentVariable("MYSQLDBSVC_SERVICE_HOST");
            string database = Environment.GetEnvironmentVariable("IOT.HOSTING.MYSQLDBSVC.MYSQLDATABASE");
            string port = Environment.GetEnvironmentVariable("MYSQLDBSVC_SERVICE_PORT_YKMDBSERVICE");
            strConn = $"server={server};port={port};user={uid};password={pwd}; database={database};";
        }

        public static DataTable GetTable(string strSQL, MySqlParameter[] pas, CommandType cmdtype)
        {
            DataTable dt = new DataTable(); ;
            using (var conn = new MySqlConnection(strConn))
            {
                var da = new MySqlDataAdapter(strSQL, conn);
                da.SelectCommand.CommandType = cmdtype;
                if (pas != null)
                {
                    da.SelectCommand.Parameters.AddRange(pas);
                }
                da.Fill(dt);
            }
            return dt;
        }

        public static int ExcuteSQL(string strSQL, MySqlParameter[] paras)
        {
            return ExcuteSQL(strSQL, paras, CommandType.Text);
        }

        public static int ExcuteSQL(string strSQL, MySqlParameter[] paras, CommandType cmdType)
        {
            int i = 0;
            using (var conn = new MySqlConnection(strConn))
            {
                var cmd = new MySqlCommand(strSQL, conn);
                cmd.CommandType = cmdType;
                if (paras != null)
                {
                    cmd.Parameters.AddRange(paras);
                }
                conn.Open();
                i = cmd.ExecuteNonQuery();
                conn.Close();
            }
            return i;
        }
    }
}

5、發(fā)布Demo應(yīng)用

以文件夾方式發(fā)布asp.net mvc應(yīng)用(基于4.5 .Net Framework)image.png

鏡像打包

將以上準備好的Dockerfile文件與Demo應(yīng)用放到同一目錄下:image.jpng使用docker build -t aspnetdemo:v1.0.0 .命令進行鏡像打包。打包成功后如下圖:image.png

鏡像上傳

請參照鏡像倉庫,第5小節(jié),或者登錄物聯(lián)網(wǎng)平臺后在鏡像管理,鏡像列表中點擊查看,也可以看到鏡像上傳相關(guān)方法。

鏡像部署

登錄到阿里云物聯(lián)網(wǎng)平臺,在左邊菜單欄中找到應(yīng)用托管 > 應(yīng)用配置并打開。然后點擊右上角的使用鏡像創(chuàng)建配置填寫好相關(guān)配置信息:image.png

配置創(chuàng)建后,在配置列表中點擊編輯進入相關(guān)節(jié)點配置頁面,依次拖動MysqlHA節(jié)點、Mysql初始化節(jié)點與自研節(jié)點各一個到右邊的畫布,填寫好每個節(jié)點的相關(guān)配置并連線,詳細配置如下:

1、Mysql服務(wù)器節(jié)點配置

這里按照之前約定的Mysql服務(wù)器配置信息進行填寫。image.png

2、Mysql服務(wù)器初始化節(jié)點配置

在數(shù)據(jù)庫的初始化需要較長時間或初始化需要寫入大量數(shù)據(jù)情況下,把數(shù)據(jù)庫相關(guān)的初始化工作放到Mysql初始化節(jié)點中是最佳實踐?,F(xiàn)在只需要把上面準備好的數(shù)據(jù)庫初始化sql腳本文件上傳至該節(jié)點中,當應(yīng)用部署實例時就會執(zhí)行該腳本文件,注意數(shù)據(jù)庫相關(guān)配置信息要與MysqlHA節(jié)點配置保存一致。見下圖:image.png

區(qū)域①:請仔細核對區(qū)域中的這幾項配置,注意與mysqldbsvc數(shù)據(jù)庫節(jié)點配置保持一致。

區(qū)域②:在此處上傳數(shù)據(jù)庫sql初始化腳本。

3、自研節(jié)點配置

自研節(jié)點是運行我們Demo應(yīng)用的節(jié)點,鏡像版本選擇剛打包上傳的版本1.0.0。注意限制應(yīng)用的內(nèi)存使用,避免因內(nèi)存不足導(dǎo)致節(jié)點重啟或發(fā)生錯誤。image.png注意配置應(yīng)用端口與外網(wǎng)的端口映射對,Demo應(yīng)用使用的是端口80(IIS默認端口),外部端口可根據(jù)實際情況填寫。把外網(wǎng)處勾選上,不然外網(wǎng)將無法訪問Demo應(yīng)用。image.png請仔細核對各個配置信息是否填寫正確,以免導(dǎo)致稍后部署運行失敗。

4、部署并運行

在左側(cè)菜單欄中打開應(yīng)用管理,選擇之前的配置進行部署,等待部署成功后,點擊應(yīng)用列表中進入管理頁面,點擊打開臨時域名鏈接就可以查看部署的Demo應(yīng)用了,見下圖:image.png

Demo下載

Aspnet+Mysql