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内容:
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