如何在用户访问应用程序URL时在Google App Engine上部署node.js应用程序以使其加载?

时间:2019-01-13 08:34:01

标签: node.js docker google-app-engine google-cloud-platform

我是Google App Engine的新手,并且有一个我正在从GitHub存储库中部署的node.js应用程序。目前,我似乎不得不手动输入一些步骤来预览应用程序,并且当我尝试使用“ gcloud app deploy”进行部署时,服务器仅抛出500错误。我想发生的事情是“ gcloud应用程序部署”真正起作用了。大概这意味着无论我是否登录到Google Cloud Services,都要去lucidnodes-dev.appspot.com实际运行该应用程序。

在玩了dockerfiles两天之后,我在哭叔叔。我需要帮助。

我正在运行的手动步骤是从Google Cloud Shell内部进行的:

cd LucidNodes // Enter the directory where the app files live
node index.js

这将返回:

LucidNodes listening on port 3000

按预期,当我在端口3000上运行Web Preview时,我可以看到该应用程序正在运行。

这是我的服务器代码:

server.js文件:

const express = require('express');
const path = require('path');
const url = require('url');

var init = function( app, prt ){

    app.listen( prt, () => console.log('LucidNodes listening on port ' , prt ));
};

exports.init = init;

和index.js文件:

const server = require('./server');
const fs = require('fs');
const express = require('express');
const path = require('path');
const serveStatic = require('serve-static');
const serveIndex = require('serve-index');
const staticPaths = require('./defineStaticPaths');
const htmlMethods = require('./js/htmlMethods');  // import custom methods for handling HTML
const app = express();
const routes = require('./routes');

staticPaths.defineStaticPaths( app );
app.use( routes );

server.init( app, 8080 );

请注意,我已将应用程序的本地实例和GitHub实例上的端口更改为8080。我不确定更改端口号是否可以解决部署和运行应用程序时出现的500错误问题,但是我也无法不能从GitHub存储库中更新GAE上的应用程序实例,因此该应用程序仍在GAE的3000端口上运行,因此也偏离了dockerfiles,到目前为止,这是又一次学习上的麻烦,但是我想的时间。

所以...我想做的是让我在调用lucidnodes-dev.appspot.com时实际部署并运行该应用程序。该怎么做?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

部署到App Engine时,请确保:

  • 您应用的根目录中有一个well-formed and valid app.yaml file
  • 命令glcoud app deploy从同一根目录运行
  • package.json包含script字段,指示App Engine安装依赖项并运行网络服务器:

"scripts": {
  "start": "node index.js"
}

如果您没有在package.json中包含此内容,则该应用程序会继续尝试在本地服务器上进行部署,这当然是行不通的。无论如何,您看到网站的事实很可能是由于该应用程序的缓存版本,或者以前的版本在新的部署失败后仍可以运行。

您要在标准或灵活环境中进行部署吗?