-
Notifications
You must be signed in to change notification settings - Fork 654
MSDeploy VS. ZipDeploy
These are two common ways to deploy your application given zipped artifact; MSDeploy and ZipDeploy.
MSDeploy has been there since IIS and it has many options not only to simply unzip and lay out the artifacts; but also configure various IIS and web configurations. One requires VS or MSDeploy tooling to generate MSDeploy zip package. If you are using other tooling such as typical zip tool, the MSDeploy may not understand whe content resulting in unintelligible error such as certain directory not found. The content in the zip is usually not the same as the outcome on d:\home\site\wwwroot.
ZipDeploy (as name stated) is intended for xcopy or ftp style deployment. It takes unzip the artifacts and lay them out exactly to d:\home\site\wwwroot. You can use any tooling (such as one coming with Windows) to zip your content.
To allow Zip package deployed with ZipDeploy to mount as virtual filesystem directly without deflating or extracting, do set appSettings WEBSITE_RUN_FROM_PACKAGE=1. This setting does **not** work with MSDeploy.
Both deployments supported by ARM template (just different extension name) – samples below.
{
"name": "[concat(parameters('siteName'), '/MSDeploy')]",
"type": "Microsoft.Web/sites/extensions",
"apiVersion": "2015-08-01",
"properties": {
"packageUri": "https://..../msdeploy_content.zip"
}
}
{
"name": "[concat(parameters('siteName'), '/ZipDeploy')]",
"type": "Microsoft.Web/sites/extensions",
"apiVersion": "2015-08-01",
"properties": {
"packageUri": "https://..../zipdeploy_content.zip"
}
}
Note: ARM does not support stream content; meaning, one cannot upload local content directly to WebApp via ARM. Instead, the content needs to be out-of-band upload to a service (such as Azure Storage) which subsequently allows access to http(s). Then, configure the packageUri with the content URL with ARM template.