当前位置: 首页 > 工具软件 > koa-proxies > 使用案例 >

Nodejs KOA服务搭建打包

牧梓
2023-12-01

Nodejs KOA服务搭建打包

koa是一个新的 web 框架,由 Express 幕后的原班人马打造, 致力于成为 web 应用和 API 开发领域中的一个更小、更富有表现力、更健壮的基石。 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

const Koa = require("koa");
const fs = require("fs");
const Router = require("koa-router");
const cors = require("koa2-cors");
const proxy = require("koa-proxies");
const bodyParser = require("koa-bodyparser");
const app = new Koa();
const router = new Router();

router.get("/", async (ctx, next) => {
  // 1. 配置为静态资源服务访问demo spa
  const text = await new Promise(function (resolve, reject) {
    fs.readFile(__dirname + "/index.html", function (err, data) {
      if (err) reject("error");
      else resolve(data.toString());
    });
  });
  ctx.body = text;
});

// 2. 配置api路由,并返回 json数据
router.get("/get", async (ctx) => {
  console.log("/get", ctx);
  ctx.body = {
    sites: [
      { name: "菜鸟教程", url: "www.runoob.com" },
      { name: "google", url: "www.google.com" },
      { name: "微博", url: "www.weibo.com" },
    ],
  };
});

// 3. 配置代理
app.use(
  proxy("/api/health", {
    target: "https://hotel-international.fast-cn.wgine.com/health",
    changeOrigin: true,
  })
);
app.use(bodyParser());
// x-response-time
app.use(async (ctx, next) => {
  const start = Date.now();
  await next();
  const ms = Date.now() - start;
  ctx.set("X-Response-Time", `${ms}ms`);
});

// logger
app.use(async (ctx, next) => {
  const start = Date.now();
  await next();
  const ms = Date.now() - start;
  console.log(`${ctx.method} ${ctx.url} - ${ms}`);
});

app.use(cors());
app.use(router.routes()).use(router.allowedMethods());
app.listen(8888);

编写dockerfile,将包含demo spa、koa服务的代码 打包到docker,在本地启动访问

# dockerfile内容:
FROM node:latest
RUN mkdir -p /home/www/koa
WORKDIR /home/www/koa
COPY . /home/www/koa
RUN npm install
EXPOSE 8888
CMD ["node","server.js"]

输入命令镜像打包和容器生成

docker image build ./ -t docker-test:1.0.3
docker container create -p 3002:8888 docker-test:1.0.3
 类似资料: