2016-07-21 46 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,它的功能如預期。

相關問題