我正在尝试在Cloud Foundry中部署我的Angular应用程序。
使用ng serve
在本地进行测试后,我确认我的应用程序运行良好。
以下是我在 CF 中部署的步骤:
-
在创建
dist
文件夹ng build --prod
执行的应用程序目录中"> -
已将dist文件夹复制到其他目录,并创建
manifest.yml
包含以下内容的文件:(yml文件和dist文件夹位于同一目录中(applications: name: deploy-ng4 memory: 128M buildpack: https://github.com/cloudfoundry/staticfile-buildpack.git path: dist
-
执行
cf push deploy-ng4 -m 128M -b https://github.com/cloudfoundry/staticfile-buildpack.git
-
CF 日志显示已部署的服务正在运行,我没有看到任何错误。
-
当我尝试浏览此已部署应用程序的
cf apps
中列出的 URL 时,它显示 403 - 禁止。
你使用了错误的构建包。 Cloud Foundry 内置了对 NodeJS 的支持,因此如果您的应用程序包含 package.json 文件,您可以发出以下命令:
cf push <APP> -m <Memory> .
NodeJS 构建包是开源的,托管在:https://github.com/cloudfoundry/nodejs-buildpack
,所以你可以自定义构建包并像这样推送它:
cf push <APP> -m <Memory> -b 'https://github.com/cloudfoundry/nodejs-buildpack'
还要检查cf help push
以查看所有参数选项等。
顺便说一句,如果 NodeJS 的版本与构建包中的默认版本不匹配,则必须在package.json
中明确设置版本号。 请参阅文档。
可能已经解决了,但对于面临类似问题的人:检查angular.json
文件中outputPath
属性。对于这种情况,它必须是:
"outputPath": "dist"
我在 PCF 部署中遇到了类似的问题。我用IntelliJ Idea生成了我的Angular应用程序,它已将项目名称附加到outputPath
。然后我得到了正好 403 - 禁止访问 PCF 为服务提供的 URL,因为正确的 URL/projectname
附录中。