在Google Cloud上部署NodeJS,Puppeteer和Angular

我有以下设置:

angular度的前端
MongoDb数据库
用于API的NodeJS / Express后端(+ puppeteer)

部署步骤:
1. ng build -prod – >在/server创builddist
2. gcloud app deploy(Node.js + Express + Puppeteer + Dockerfile config *)

因为木偶戏基本上是铬合金; 一些没有交给我的图书馆不得不上传。 没问题,Docker来救援。

 FROM node:8-slim MAINTAINER Eric Bidelman <ebidel@> RUN apt-get update && apt-get install -y wget --no-install-recommends \ && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - \ && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \ && apt-get update \ && apt-get install -y google-chrome-unstable \ --no-install-recommends \ && rm -rf /var/lib/apt/lists/* \ && apt-get purge --auto-remove -y curl \ && rm -rf /src/*.deb COPY . /app/ WORKDIR app # Install deps for server. RUN yarn ARG CACHEBUST=1 RUN yarn add puppeteer RUN groupadd -r pptruser && useradd -r -g pptruser -G audio,video pptruser \ && mkdir -p /home/pptruser/Downloads \ && chown -R pptruser:pptruser /home/pptruser \ && chown -R pptruser:pptruser /app USER pptruser EXPOSE 8080 CMD ["yarn", "start"] 

这是从“尝试木偶”github回购( https://github.com/ebidel/try-puppeteer )

现在前端是一个私人网站,最多2人。 如何以NodeJS无需解决的方式部署Angular? 有人build议“谷歌云桶$ 0.09 /月”这很酷。

现在,MongoDB实例正在使用谷歌云计算引擎。 该数据库收集了400个文件,每个文件大小为11kb。 仍然在这里免费的资源。

在网站上的function:对于所有(过滤)的文件 – >做动作需要我们加载pupeteer()。然后(res.send(结果))

这意味着平均有200个来自前端的API请求被一次性处理。 即使NodeJS(一个接一个地同步)处理这个问题,我正在考虑添加更多的“NodeJS-clones”,也许我可以用这种方式处理同时发生的请求?

– 这让我想知道,如果我一次有300个客户端的NodeJS服务器, 如何处理请求? 我怎么不觉得在请求之间“停工”? 有一个队列是一对一的; 或者这是对AJAX的限制?

换句话说,我怎样才能部署这种方式,我可以处理这个请求瀑布?

我已经读过“nginx”和“forever”,但是我更多地考虑装载10个puppeteer(甚至是来自同一个虚拟机,比如制表符或者窗口)的实例,他们可以同时工作。

这里是我卡住的地方:我明白我可以部署节点克隆; 但我怎么会与谷歌云,我可以通过分割和征服的规模。 (“每个订单2个请求200个请求”是“每个订单1个请求”的200个请求的两倍)

我做错了吗? 向后端发出200个请求,而不是用200个对象发出一个请求 – 另一个问题是怕超时。 每个请求需要40秒才能完成。

App.yaml为“default”(be + fe一起部署):

 runtime: custom env: flex service: default automatic_scaling: max_num_instances: 1 resources: cpu: 1 memory_gb: 1 disk_size_gb: 10 skip_files: - node_modules/ - test*.js - ^(.*/)?.*\.md$ 

注意:从回购的确切app.yaml驱动我的成本为$ 250/13天。 我需要find一个更便宜的方式来执行这个程序。

我不完全确定Google Cloud上的结算是如何运作的。 如果是消息吞吐量,那么运行无头的Chrome无论是因为它通过WebSockets发送请求(这意味着有可能成本),将是昂贵的。

这是一个无浏览器的devise,自下而上:云端无头浏览器。 如果您有兴趣的话,我也会在这里开放底层的docker图片 。

我认为底线是许多/大多数提供商真的没有很好的设置来处理像浏览器一样执行的二进制文件。 无论是他们的部署方式使其变得困难,或者他们的计费背后的方法使其昂贵。 当我说你的账单和透明度问题不是我遇到的第一个问题时,请相信我。