我正在尝试在Cloud Foundry中部署我的Angular应用程序。
使用ng serve
进行本地测试后,我确认我的应用程序运行良好。
以下是我在CF中部署的步骤:
在已执行ng build --prod
的应用目录中创建了dist
文件夹“
将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
中为此部署的应用程序列出的网址时,它显示403 - 禁止访问。
答案 0 :(得分:1)
您使用的是错误的buildpack。 Cloud Foundry内置了对NodeJS的支持,因此如果您的应用包含package.json文件,您可以发出以下命令:
cf push <APP> -m <Memory> .
NodeJS buildpack是开源的,托管在:https://github.com/cloudfoundry/nodejs-buildpack
,所以你可以自定义buildpack并推送它:
cf push <APP> -m <Memory> -b 'https://github.com/cloudfoundry/nodejs-buildpack'
同时检查cf help push
以查看所有参数选项等。
顺便说一句,如果NodeJS的版本与buildpack中的默认版本不匹配,则必须在package.json
中明确设置版本号。 See the document
答案 1 :(得分:0)
可能已经解决了,但是对于面临类似问题的人们来说:检查outputPath
文件中的angular.json
属性。对于这种情况,必须为:
"outputPath": "dist"
我在PCF部署中遇到了类似的问题。我使用IntelliJ Idea生成了Angular应用程序,它已将项目名称附加到outputPath
。然后我得到了403-禁止访问PCF为该服务提供的URL,因为正确的URL带有/projectname
附录。