Kudu Azure App Zip 通过 Powershell 部署 - 将文件传输到 wwwroot
Kudu Azure App Zip Deploy via Powershell - Transfer files to wwwroot
我正在使用 powershell 中的 Kudu Azure Zip Deploy API。
如何确保已部署的 zip 文件夹的内容提取到 wwwroot 中,而 wwwroot 是包含文件夹?
当前:
(这里我的zip文件夹是wwwroot里面的容器)
/site/wwwroot/MYZIPFOLDERNAME/CONTENTS
预期:
(我想把zip文件夹里的内容直接加到wwwroot和zip文件夹名之外)
/site/wwwroot/CONTENTS
我已经按照下面的文档进行操作,并且有一个如下的 powershell 脚本:
https://docs.microsoft.com/en-us/azure/app-service/deploy-zip
#PowerShell
$username = "<deployment_user>"
$password = "<deployment_password>"
$filePath = "<zip_file_path>"
$apiUrl = "https://<app_name>.scm.azurewebsites.net/api/zipdeploy"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method POST -InFile $filePath -ContentType "multipart/form-data"
脚本完成后,压缩文件上传到我的站点,但内容打包在文件夹中并嵌套在 wwwroot 目录下。
如果我使用 ZipDeployUI 并拖动文件夹,它将解压缩到 wwwroot/ 目录中,但没有预期的文件夹名称。
按照官方文档Deploy your app to Azure App Service with a ZIP or WAR file
to run the PowerShell script in the subsection With PowerShell
,没问题,效果很好。
您的问题是由 zip 文件的文件结构引起的。我来告诉你区别。
我的本地目录 D:\projects\xml
中有两个 xml 文件。我使用两种不同的方式将它们打包成一个 zip 文件 xml.zip
:使用容器 xml
,不使用任何容器,如下图通过 7-zip
.
图 1. zip 文件中的容器 xml
xml.zip
图1.1。容器 xml
包含两个 xml 个文件
图 2. zip 文件中没有容器 xml.zip
然后我 运行 使用具有不同文件结构的不同 zip 文件的相同 PowerShell 脚本,我在我的 WebApp ZipDeployUI
中得到了不同的结果,如下图。
图 3. 运行 带有容器 xml
的 zip 文件的 PowerShell 脚本,xml
容器被解压到 wwwroot
下
图3.1。路径 wwwroot/xml
下的容器 xml
中的两个 xml 文件
图4.运行PowerShell脚本压缩包没有容器,两个xml文件直接解压到wwwroot
下
因此,如果您使用 7-zip
等工具,请将这些文件直接打包为 zip 文件,而不是打包它们的父目录。或者在PowerShell命令行中,请先cd
移动到你要打包的这些文件所在的目录,然后运行Compress-Archive -Path * -DestinationPath <file-name>.zip
得到一个zip文件,如Create a project Zip file
说。
希望对您有所帮助。
我正在使用 powershell 中的 Kudu Azure Zip Deploy API。
如何确保已部署的 zip 文件夹的内容提取到 wwwroot 中,而 wwwroot 是包含文件夹?
当前:
(这里我的zip文件夹是wwwroot里面的容器)
/site/wwwroot/MYZIPFOLDERNAME/CONTENTS
预期:
(我想把zip文件夹里的内容直接加到wwwroot和zip文件夹名之外)
/site/wwwroot/CONTENTS
我已经按照下面的文档进行操作,并且有一个如下的 powershell 脚本:
https://docs.microsoft.com/en-us/azure/app-service/deploy-zip
#PowerShell
$username = "<deployment_user>"
$password = "<deployment_password>"
$filePath = "<zip_file_path>"
$apiUrl = "https://<app_name>.scm.azurewebsites.net/api/zipdeploy"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method POST -InFile $filePath -ContentType "multipart/form-data"
脚本完成后,压缩文件上传到我的站点,但内容打包在文件夹中并嵌套在 wwwroot 目录下。
如果我使用 ZipDeployUI 并拖动文件夹,它将解压缩到 wwwroot/ 目录中,但没有预期的文件夹名称。
按照官方文档Deploy your app to Azure App Service with a ZIP or WAR file
to run the PowerShell script in the subsection With PowerShell
,没问题,效果很好。
您的问题是由 zip 文件的文件结构引起的。我来告诉你区别。
我的本地目录 D:\projects\xml
中有两个 xml 文件。我使用两种不同的方式将它们打包成一个 zip 文件 xml.zip
:使用容器 xml
,不使用任何容器,如下图通过 7-zip
.
图 1. zip 文件中的容器 xml
xml.zip
图1.1。容器 xml
包含两个 xml 个文件
图 2. zip 文件中没有容器 xml.zip
然后我 运行 使用具有不同文件结构的不同 zip 文件的相同 PowerShell 脚本,我在我的 WebApp ZipDeployUI
中得到了不同的结果,如下图。
图 3. 运行 带有容器 xml
的 zip 文件的 PowerShell 脚本,xml
容器被解压到 wwwroot
图3.1。路径 wwwroot/xml
xml
中的两个 xml 文件
图4.运行PowerShell脚本压缩包没有容器,两个xml文件直接解压到wwwroot
因此,如果您使用 7-zip
等工具,请将这些文件直接打包为 zip 文件,而不是打包它们的父目录。或者在PowerShell命令行中,请先cd
移动到你要打包的这些文件所在的目录,然后运行Compress-Archive -Path * -DestinationPath <file-name>.zip
得到一个zip文件,如Create a project Zip file
说。
希望对您有所帮助。