英文:
Unable to push Go app inside cloud foundry
问题
我正在尝试将Go应用程序推送到Cloud Foundry。当我尝试构建二进制文件并推送应用程序时,应用程序崩溃并返回启动失败。
这是我的清单文件:
---
applications:
- name: project-suspension
instances: 1
memory: 256MB
disk_quota: 512MB
buildpacks:
- go_buildpack
- binary_buildpack
env:
GOPACKAGENAME: dev.azure.com/.../service-infrastructure
我尝试将每个文件放在项目的根文件夹中,但是当我推送应用程序时,它仍然崩溃。我尝试的另一种方法是使用命令标志"-c 'project-suspension'",但它仍然崩溃。
英文:
I'm trying to push Go app into cloud foundry. When I try to build the binary and push it the app crashes and it returns start unsuccessful.
This is my manifest file
---
applications:
- name: project-suspension
instances: 1
memory: 256MB
disk_quota: 512MB
buildpacks:
- go_buildpack
- binary_buildpack
env:
GOPACKAGENAME: dev.azure.com/.../service-infrastructure
I tried putting every file inside the root folder of the project but the app is still crashing when I push it. The other thing i tried is using the command flag -c "project-suspension" and it still crashes.
答案1
得分: 0
如评论中所提到的,你不需要同时使用两个构建包。如果你正在推送源代码,可以使用go-buildpack;如果你正在本地构建并推送二进制文件,则可以使用binary_buildpack。如果要推送本地构建的二进制文件,你需要交叉编译为Linux(除非你的工作站正在运行Linux)。
示例:
---
applications:
- name: project-suspension
instances: 1
memory: 256MB
disk_quota: 512MB
buildpacks:
- go_buildpack
env:
GOPACKAGENAME: dev.azure.com/.../service-infrastructure
或者
---
applications:
- name: project-suspension
instances: 1
memory: 256MB
disk_quota: 512MB
buildpacks:
- binary_buildpack
command: ./project-suspension
后者假设你要运行的二进制文件名为project-suspension
,并且它存在于cf push
运行的相同目录中(或者你已经设置了path:
或-p
的相同目录)。
此外,请注意应用程序可能因其他原因无法启动,例如健康检查未通过。默认的健康检查将基于端口,因此它将期望你的应用程序在设置为$PORT
的端口号上进行监听。确保你的应用程序读取$PORT
并在该端口上进行监听。
英文:
As mentioned in the comment, you don't need both buildpacks. Use either the go-buildpack, if you are pushing source code, or the binary buildpack if you are building locally and pushing the binary. If pushing a binary built locally, you need to cross-compile for Linux (unless you are running Linux as your workstation).
Ex:
---
applications:
- name: project-suspension
instances: 1
memory: 256MB
disk_quota: 512MB
buildpacks:
- go_buildpack
env:
GOPACKAGENAME: dev.azure.com/.../service-infrastructure
or
---
applications:
- name: project-suspension
instances: 1
memory: 256MB
disk_quota: 512MB
buildpacks:
- binary_buildpack
command: ./project-suspension
The latter assumes that the binary you want to run is called project-suspension
and that it exists in the same directory from which cf push
is run (or the same directory where you've set path:
or -p
.
Also, be aware that applications can fail to start for other reasons, like if the health check does not pass. The default health check is going to be port-based, so it'll expect your application to be listening on the port number set with $PORT
. Make sure your app reads $PORT
and listens on that port.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论