2016-09-27 61 views
0

Openshift無法通過Openshift UI使用node.js最新的盒式磁帶創建node.js應用程序。失敗與以下錯誤創建:創建node.js最新的盒式磁帶時發生Openshift錯誤

Starting Node.js application... The initial build for the application failed: Shell command '/sbin/runuser -s /bin/sh 57eae88f7628e1677c000077 -c "exec /usr/bin/runcon 'unconfined_u:system_r:openshift_t:s0:c4,c966' /bin/sh -c \"gear postreceive --init >> /tmp/initial-build.log 2>&1\""' returned an error. rc=255

和日誌的尾巴說:

Preparing build for deployment

Deployment id is b941b282

Activating deployment

Git Post-Receive Result: failure

Activation status: failure

Activation failed for the following gears:

57eae88f7628e1677c000077 (Error activating gear: CLIENT_ERROR: Failed to execute: 'control start' for

/var/lib/openshift/57eae88f7628e1677c000077/nodejs

Deployment completed with status: failure

post receive failed

我不知道如何調試這一點。我有一個package.json,它有一個「主」指向我的app.js,而我的app.js正在使用環境變量來設置IP /端口。它通常在當地工作npm install && npm start。這是一款適用於節點0.10盒式磁帶的應用程序。

回答

0

所以我想通了這一點,我想我會提供的情況下解決其他人穿過它運行。因此,Openshift站點上節點最新的盒式磁帶是由社區提供的,因此它與正常節點0.10盒式磁帶有一些重要區別。特別是三件事,我跑進:

  1. 它要求你的應用程序暴露出GET /health終點返回200 OK,請參閱:https://github.com/icflorescu/openshift-cartridge-nodejs/blob/master/usr/template/app.js#L14

  2. 它對ip和端口使用不同的環境變量,NODE_IPNODE_PORT。我不確定正常的開放式移位環境變量是否也可以工作,因爲我從未回去嘗試過。但是示例模板至少使用了備用環境變量。見https://github.com/icflorescu/openshift-cartridge-nodejs/blob/master/usr/template/app.js#L41

  3. 它希望你在你的package.json有一個啓動腳本,但它也不是實際運行npm start,它的模擬它。因此,您期望與npm start命令一起使用的某些內容在此不起作用。例如,我的起始命令爲NODE_ENV=development node app.js,如果通過npm start運行,那麼這很好,但在運行自定義控制腳本時完全不工作,請參閱https://github.com/icflorescu/openshift-cartridge-nodejs/blob/master/bin/control#L47

0

節點6.6對0.10是一個很大的區別。您應該使用最新的節點或其新「盒式磁帶」使用的任何節點在本地工作。

也期待在build.log

+0

它與6.6一起工作。如何獲取永不被創建的容器的日誌? – Kevin

+0

也許有一種方法可以像Node環境一樣啓動容器,而不是運行節點腳本本身以及shell,如bash,zsh或fish,然後遠程啓動並自行啓動節點進程https://docs.openshift .COM /企業/ 3.1/dev_guide/ssh_environment.html –

相關問題