Nodejs网页截图应用能否部署在NodeAppEngine或者openshift?

Nodejs网页截图应用能否部署在NodeAppEngine或者openshift?

一个很好用的截图应用。

开源地址:https://github.com/fzaninotto/screenshot-as-a-service

应用地址:https://npmjs.org/package/screenshot-as-a-service


3 回复

Node.js 网页截图应用能否部署在 NodeAppEngine 或者 OpenShift?

背景介绍

在现代Web开发中,有时我们需要将网页转换成图片。例如,用于生成预览图、制作报告等场景。而fzaninotto/screenshot-as-a-service是一个非常实用的Node.js项目,它能够实现这一功能。

该项目基于puppeteer库,可以捕获网页并将其保存为图片或PDF文件。现在,我们将探讨如何将此项目部署到Google Cloud的Node.js App Engine以及Red Hat的OpenShift平台上。

部署到 Google Cloud Node.js App Engine

  1. 创建App Engine应用

    在Google Cloud Console中,创建一个新的App Engine应用,并选择你的项目。

  2. 配置项目

    在项目的根目录下创建一个名为app.yaml的文件,并添加以下内容:

    runtime: nodejs14
    instance_class: F4_1G
    
  3. 部署应用

    使用gcloud命令行工具进行部署:

    gcloud app deploy
    

部署到 Red Hat OpenShift

  1. 创建OpenShift项目

    登录到OpenShift控制台,创建一个新的项目。

  2. 构建Docker镜像

    创建一个Dockerfile,在项目根目录下添加以下内容:

    FROM node:14-alpine
    WORKDIR /app
    COPY . .
    RUN npm install
    CMD ["node", "index.js"]
    
  3. 推送镜像到OpenShift

    使用oc命令行工具登录到OpenShift集群,并推送Docker镜像:

    oc new-app .
    

示例代码

以下是screenshot-as-a-service项目的简化版本,仅包含基本的启动代码:

const express = require('express');
const puppeteer = require('puppeteer');

const app = express();

app.get('/screenshot', async (req, res) => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto(req.query.url);
  await page.screenshot({ path: 'screenshot.png' });
  res.sendFile('screenshot.png', { root: __dirname });
  await browser.close();
});

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

总结

通过上述步骤,你可以将screenshot-as-a-service应用部署到Google Cloud的Node.js App Engine和Red Hat的OpenShift平台。这些平台提供了稳定的运行环境和强大的扩展能力,确保你的应用可以高效稳定地运行。


NAE 可以不用考虑了。。。用的还是 0.6.x 的版本。。

当然可以。screenshot-as-a-service 是一个基于 Node.js 的网页截图应用,可以部署到 Google Cloud 的 Node.js App Engine 或 OpenShift 上。

部署到 Google Cloud Node.js App Engine

  1. 安装并配置 Google Cloud SDK: 确保你已经安装了 Google Cloud SDK 并进行了初始化配置。

  2. 创建 app.yaml 文件: 在项目的根目录下创建一个 app.yaml 文件,内容如下:

    runtime: nodejs16  # 选择合适的 Node.js 版本
    
  3. 部署应用: 使用以下命令部署应用到 Google Cloud App Engine:

    gcloud app deploy
    

部署到 OpenShift

  1. 安装 OpenShift CLI: 确保你已经安装了 OpenShift CLI (oc)。

  2. 构建 Docker 镜像: 创建一个 Dockerfile 来构建镜像。假设你的项目结构如下:

    screenshot-as-a-service/
    ├── Dockerfile
    └── package.json
    

    Dockerfile 内容如下:

    FROM node:16-alpine
    
    WORKDIR /app
    
    COPY package*.json ./
    RUN npm install
    
    COPY . .
    
    EXPOSE 3000
    
    CMD ["node", "index.js"]
    
  3. 构建和推送镜像: 构建镜像并将它推送到容器注册表:

    docker build -t my-screenshot-service .
    docker push my-screenshot-service
    
  4. 部署到 OpenShift: 使用 OpenShift CLI 创建一个新的应用:

    oc new-app my-screenshot-service --name=screenshot-service
    oc expose svc/screenshot-service
    

通过以上步骤,你可以将 screenshot-as-a-service 应用部署到 Google Cloud 的 Node.js App Engine 或 OpenShift 上。

回到顶部