【问题标题】:Azure webjobs deployment and working directoryAzure webjobs 部署和工作目录
【发布时间】:2018-01-16 16:17:46
【问题描述】:

我对将 webjobs 部署到 azure 感到困惑。

我正在使用 .net 核心,所以我手动将我的 webjobs 发布到我的 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 文件,但这里缺少 App_Data... 中的一些 JSON 配置文件。

那么 - 为什么我的网络作业从这里运行?为什么我的一些部署文件丢失了?

【问题讨论】:

    标签: azure deployment azure-webjobs kudu


    【解决方案1】:

    为什么我的网络作业从这里运行?

    WebJob 被复制到%TEMP%\jobs\{job type}\{job name}\{random name} 下的临时目录中,并将从那里运行。此选项防止原始 WebJob 二进制文件被锁定,这可能会导致重新部署 WebJob 出现问题。

    WebJob 直接从 WebJob 二进制目录运行。我们称这个选项就位。此选项可能存在锁定问题,并且仅应在没有锁定文件风险的情况下使用。

    默认情况下使用第一个选项(in place = false)。您可以在 settings.job 中明确配置此设置。例如

    { "is_in_place": true/false }
    

    为什么我的一些部署文件丢失了?

    我也测试并重现了这种情况。但我没有找到解决这个问题的解决方案。我建议你可以使用Environment.GetEnvironmentVariable("WEBJOBS_ROOT_PATH"); 来获取根路径 webjob 的目录。

    WEBJOBS_ROOT_PATH是webjob文件的位置,你可以指定一个绝对路径,否则这个值会和默认的根路径结合起来:

    D:/home/site/wwwroot/ + WEBJOBS_ROOT_PATH(relative)获取webjob_name、webjob_run_id等。

    更多详情,您可以阅读article

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多