2016-07-21 92 views
0

我的6个Swisscom CloudFoundry空间中的3个使用相同(自定义)buildpack进行部署时出现以下错误。

Starting app my-app-name in org my-org/    space my-space as [email protected] 
Creating container 
Successfully created container 
Downloading app package... 
Downloaded app package (26M) 
Staging... 
exec: "git": executable file not found in $PATH 
Exit status 1 
Staging failed: Exited with status 1 

FAILED 
StagingError 

我使用的manifest.yml以下buildpack:

--- 
buildpack: https://github.com/shiftcode/java-buildpack-mongodb 
domain: scapp.io 
path: target/my-app-name.zip 
disk_quota: 1024M 
domains: 
    - scapp.io 
services: 
- my-service-one 
- my-service-two 
... 

env: 
    JBP_CONFIG_OPEN_JDK_JRE : '[jre: {version: 1.8.0_+}, memory_calculator: {memory_heuristics: {heap: 35, metaspace: 30, stack: 5, native: 30}}]' 
    MONGO_DB_VERSION : '3.2.0' 
    MONGODB_CMD_PATH : '.mongo/bin/' 
    MONGODB_MAX_POOLSIZE : '1' 
    MALLOC_ARENA_MAX : '2' 
    MALLOC_MMAP_THRESHOLD_ : '131072' 
    MALLOC_TRIM_THRESHOLD_ : '131072' 
    MALLOC_TOP_PAD_ : '131072' 
    MALLOC_MMAP_MAX_ : '65536' 

# app specific configuration 
applications: 
- name: my-app-name-development 
    memory: 512M 
    instances: 2 
    host: my-app-name-development 

- name: my-app-name-staging 
    memory: 512M 
    instances: 2 
    host: my-app-name-staging 

这buildpack扩展加入了MongoDB的安装(我们使用的备份mongodump指令)普通的Java-buildpack。具有相同代码和相同manifest.yml设置的相同buildpack适用于某些空间,但不适用于其他空间。我曾尝试删除应用程序,然后再次推送未成功。我在所有空间和应用程序上启用了ssh访问(diego)。

有关为什么git可执行文件在暂存时不可用以及如何解决这个问题或解决这个问题的任何想法?我想避免删除空间并重新创建它们的麻烦(和成本)。

+0

请使用您的'Manifest.yml'编辑您的信息。 Cloud Foundry似乎认为您正在使用GO buildpack而不是Java buildpack。同样在开发者门户中,它显示GO标志。错误'exec:“git”:可执行文件不在$ PATH中找到来自GO buildpack。 –

+0

我已经更新了manifest.yml。但即使cloudfoundry认为我正在使用GO buildpack包装,那么在其他空间中完全相同的东西会如何呢?当我使用https:// github.com/cloudfoundry/java-buildpack或者提供的'java_buildpack'生成'exec:“tar”:可执行文件,而不是“可执行文件”时,在$ PATH中找到。 –

回答

2

这是Cloud Foundry 0.7.0及更早版本中的garden-runc容器化技术的一个问题。正如接受的答案所推测的那样,如果一个env变量包含字符串“PATH”,那么Garden中会有一个错误地设置PATH错误。

自从garden-runc发布0.8.0以来,这已经得到解决。你可以找到相关的故事曾在这里:

https://www.pivotaltracker.com/story/show/129773615

,并提交能解决这里这个问题:

https://github.com/cloudfoundry/guardian/commit/e191b2ca8365f44c812cb8feb70c722391886063

对于这个问题的解决方法是设置另一个环境变量的您的应用程序:

PATH: /usr/local/bin:/usr/bin:/bin

0

经过大量的env变量的摆弄之后,我发现问题出在我的manifest.ymlMONGODB_CMD_PATH env变量上。看起来,任何以PATH结尾的env变量都会影响/覆盖$PATH env,导致登台进程失败,因为所需的可执行文件不再位于系统路径中。

0

我有同样的问题,接受的答案为我工作。以下是Google员工的利益:

我在清单中设置了PYTHONPATH变量。 CloudFoundry正确设置了PYTHONPATH env var,但它也使用它来覆盖PATH变量。我的解决方法是将PYTHONPATH设置为$PATH:/my/python/path。虽然这增加了无关目录PATHPYTHONPATH,它的功能如预期。

相关问题