0

我正在从 Azure 容器注册表中的容器部署到 Azure Function App。

我最初使用func init命令(选择 typescript 选项),并使用服务总线主题触发器模板添加了一些代码。当我在npm start本地运行时,我可以让它工作。在 package.json 中有一个构建 typescript 的“prestart”命令,它看起来像

"prestart": "npm run build && func extensions install",

该构建创建了一个 dist 目录,因此当它启动时,我可以看到:

[8/14/19 8:45:43 PM] 1 functions loaded

一切都很好。当我将此函数部署到我的函数应用时,问题就开始了。我正在从 Azure 容器注册表进行部署。

通过 Kudu,我可以看到容器错误日志:

2019-08-14T20:51:05.870505061Z       The following 1 functions are in error:
2019-08-14T20:51:05.870515162Z       ehmTopicTrigger: Invalid script file name configuration. The 'scriptFile' property is set to a file that does not exist.
2019-08-14T20:51:05.870540263Z       

当我在func start本地运行并且我的 dist 目录不存在时,我得到完全相同的错误。这让我相信,当 docker 容器在 Function App 中启动时,它并没有运行npm start(或者出于某种原因,它没有构建和创建dist)。

我不认为提交和部署dist目录是答案,因为模板提供的.gitignore 包括/dist。

我在这里做错了什么?

4

1 回答 1

0

我将 npm run build 添加到 docker 文件中,它现在可以工作了。

 FROM mcr.microsoft.com/azure-functions/node:2.0

 ENV AzureWebJobsScriptRoot=/home/site/wwwroot \
    AzureFunctionsJobHost__Logging__Console__IsEnabled=true

 COPY . /home/site/wwwroot

 RUN cd /home/site/wwwroot && \
    npm install && \
    npm run build 

这会在容器内构建 dist 文件夹。

于 2019-08-21T15:19:31.630 回答