我使用的是来自powershell的kudu azure zip部署api。
如何确保在wwwroot中提取部署的zip文件夹的内容,而wwwroot是包含这些内容的文件夹?
电流:
(这里我的zip文件夹是wwwroot中的容器)
/站点/wwwroot/myzipfoldername/contents
预期:
(我希望zip文件夹的内容直接添加到wwwroot中,并且在zip文件夹名称之外)
/站点/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/目录中,而没有预期的文件夹名称。
1条答案
按热度按时间fnvucqvd1#
我看了官方文件
Deploy your app to Azure App Service with a ZIP or WAR file
在子部分中运行powershell脚本With PowerShell
,没关系,很好用。您的问题是由zip文件的文件结构引起的。我会告诉你区别。
我的目录中有两个xml文件
D:\projects\xml
在本地。我把它们打包成一个zip文件xml.zip
用两种不同的方法:用一个容器xml
,没有任何容器,如下图所示7-zip
.图1。容器
xml
在zip文件中xml.zip
图1.1。容器
xml
包含两个xml文件图2。zip文件中没有容器
xml.zip
然后用不同的zip文件运行同一个powershell脚本,不同的zip文件具有不同的文件结构,最后得到不同的结果
ZipDeployUI
如下图所示。图3。使用包含容器的zip文件运行powershell脚本
xml
,的xml
容器将在wwwroot
图3.1。容器中的两个xml文件
xml
在小路下面wwwroot/xml
图4。使用没有容器的zip文件运行powershell脚本,这两个xml文件将直接在下面解压缩
wwwroot
因此,如果您使用的是类似这样的工具,请将这些文件直接打包到zip文件,而不是打包它们的父目录
7-zip
. 或者在powershell命令行中,请先cd
移动到包含要打包的文件的目录,然后运行Compress-Archive -Path * -DestinationPath <file-name>.zip
获取zip文件,如Create a project Zip file
说。希望有帮助。