【问题标题】:Deploying to an Azure Web App via ARM/msdeploy without deleting existing files通过 ARM/msdeploy 部署到 Azure Web 应用程序而不删除现有文件
【发布时间】:2017-08-24 18:33:07
【问题描述】:

当使用常规 msdeploy(又名 WebDeploy,用于 Visual Studio 或 VSTS 发布)部署到 Azure Web 应用程序(又名 Azure 应用程序服务)时,您可以选择不删除目标位置的现有文件.

但是当使用 ARM extensions/msdeploy 提供程序(例如通过 ARM 模板)时,默认情况下始终会删除现有文件。有没有办法覆盖它而不破坏现有文件?

【问题讨论】:

    标签: azure azure-web-app-service msdeploy azure-resource-manager


    【解决方案1】:

    Azure Web App 支持 DoNotDeleteRule 的方式是通过 addOnPackages 架构元素。

    addOnPackages 隐式使用 DoNotDelete 规则。因此,如果您想应用包而不删除现有站点中的文件,请在 addOnPackages 数组中指定它,然后不要在外部 MSDeploy 对象中定义任何内容。例如:

    {
        "properties": {
            "parameters": {
                "appName": {
                    "value": "mysite"
                },
                "location":{
                    "value": "USAAnywhere"
                }
            },
            "template": {
                "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                "contentVersion": "1.0.0-r188+188.764a8a7798ecc6ebb752343c6f8e6be2903ba711",
                "parameters": {
                    "appName": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    }
                },
                "resources": [
                    {
                        "apiVersion": "2016-08-01",
                        "name": "[parameters('appName')]",
                        "location": "[parameters('location')]",
                        "type": "Microsoft.Web/sites",
                        "resources": [
                            {
                                "apiVersion": "2016-08-01",
                                "name": "MSDeploy",
                                "type": "Extensions",
                                "dependsOn": [
                                    "[concat('Microsoft.Web/Sites/', parameters('appName'))]"
                                ],
                                "properties": {
                                    "addOnPackages" : [
                                        {
                                            "packageUri": "https://mystorageblob.blob.core.windows.net/package/my_webdeploy_package.zip",
                                            "AppOffline": true,
                                            "setParameters": {
                                                "IIS Web Application Name": "[parameters('appName')]",
                                             }
                                        }
                                    ]
                                }
                            }
                        ],
                        "properties" : {}
                    }
                ]
            },
            "mode": "Incremental"
        }
    }
    

    addOnPackages 还允许在单个 MSDeploy ARM 模板中使用多个包;外层会删除现有站点的文件,addOnPackages 是附加的,不会删除外层包。例如:

    {
        "properties": {
            "parameters": {
                "appName": {
                    "value": "mysite"
                },
                "location":{
                    "value": "USAAnywhere"
                }
            },
            "template": {
                "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                "contentVersion": "1.0.0-r188+188.764a8a7798ecc6ebb752343c6f8e6be2903ba711",
                "parameters": {
                    "appName": {
                        "type": "string"
                    },
                    "location": {
                        "type": "string"
                    }
                },
                "resources": [
                    {
                        "apiVersion": "2016-08-01",
                        "name": "[parameters('appName')]",
                        "location": "[parameters('location')]",
                        "type": "Microsoft.Web/sites",
                        "resources": [
                            {
                                "apiVersion": "2016-08-01",
                                "name": "MSDeploy",
                                "type": "Extensions",
                                "dependsOn": [
                                    "[concat('Microsoft.Web/Sites/', parameters('appName'))]"
                                ],
                                "properties": {
                                    "packageUri": "https://mystorageblob.blob.core.windows.net/package/my_webdeploy_package.zip",
                                    "dbType": "None",
                                    "connectionString": "",
                                    "AppOffline": true,
                                    "SkipAppData": true,
                                    "setParameters": {
                                        "IIS Web Application Name": "[parameters('appName')]"
                                    },
                                    "addOnPackages" : [
                                        {
                                            "packageUri": "https://mystorageblob.blob.core.windows.net/package/my_first_add_on_package.zip",
                                            "AppOffline": true,
                                            "setParameters": {
                                                "IIS Web Application Name": "[parameters('appName')]",
                                             }
                                        },
                                        {
                                            "packageUri": "https://mystorageblob.blob.core.windows.net/package/my_second_add_on_package.zip",
                                            "setParameters": {
                                                "IIS Web Application Name": "[parameters('appName')]",
                                            }
                                        }
                                    ]
                                }
                            }
                        ],
                        "properties" : {}
                    }
                ]
            },
            "mode": "Incremental"
        }
    }
    

    【讨论】:

    • AppOffline 和 SkipAppData 参数是什么意思?
    • @juvchan : "appOffline" : true 相当于 msdeploy -enableRule:AppOffline 命令行选项。默认为false(关闭)。 "skipAppData" : true 相当于 msdeploy -skip:objectname='dirPath',absolutepath=App_Data。
    猜你喜欢
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 2019-07-29
    • 1970-01-01
    • 2013-02-08
    • 2019-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多