Mat*_*rts 3 deployment azure kudu azure-webjobs
我对将 webjobs 部署到 azure 感到困惑。
我正在使用 .net core,因此我在deploy.cmd文件中手动发布我的网络作业,例如如下所示:
call :ExecuteCmd dotnet publish "%DEPLOYMENT_SOURCE%\My.WebJobs\Mt.WebJobs.csproj" --output "%DEPLOYMENT_TEMP%\App_Data\Jobs\Continuous\MyWebJobs" --configuration Release
然后将 webjob 部署到该deployment_temp文件夹。之后,KuduSync 启动并同步,如果我查看的DEPLOYMENT_TARGET话d:\home\site\wwwroot,我可以看到那里有一个App_Data\Jobs\Continuous\MyWebJobs文件夹,并且我的所有文件都已正确部署并同步到该文件夹。
但是,当我运行 webjob 时,它报告它正在从完全不同的位置运行 ( D:\local\Temp\jobs\continuous\MyCustomerIO\bp003r3f.h2g)。当我查看该文件夹时,我看到了大部分部署的 webjob 文件,但其中的一些 JSON 配置文件App_Data...丢失了。
那么 - 为什么我的网络作业从这里运行?为什么我部署的一些文件丢失了?
为什么我的网络作业从这里运行?
WebJob 被复制到临时目录%TEMP%\jobs\{job type}\{job name}\{random name}并从那里运行。此选项可防止原始 WebJob 二进制文件被锁定,这可能会导致重新部署 WebJob 时出现问题。
WebJob 直接从 WebJob 二进制文件目录运行。我们称此选项为就地选项。此选项可能存在锁定问题,并且仅应在不存在锁定文件风险的情况下使用。
默认情况下,使用第一个选项(in place = false)。您可以在 settings.job 中显式配置此设置。例如
{ "is_in_place": true/false }
Run Code Online (Sandbox Code Playgroud)
为什么我部署的一些文件丢失了?
我也测试并重现了这种情况。但我没有找到解决这个问题的方法。我建议你可以使用Environment.GetEnvironmentVariable("WEBJOBS_ROOT_PATH");直接获取webjob的根路径。
WEBJOBS_ROOT_PATH是 webjob 文件的位置,您可以指定绝对路径,否则该值将与默认根路径合并:
D:/home/site/wwwroot/ + WEBJOBS_ROOT_PATH(relative)获取 webjob_name、webjob_run_id 等。
欲了解更多详细信息,您可以阅读这篇文章。
| 归档时间: |
|
| 查看次数: |
6147 次 |
| 最近记录: |