Skip to content

funnyzak/koa-starter

Repository files navigation

Koa2 Starter

基于 Koa2 构建的快速开始 Web 脚手架。

Build Status license Sourcegraph GitHub last commit GitHub repo size

目录

特点

  1. 基于 Koa2 的 Web 框架
  2. 集成 MongoDB 数据库
  3. 集成 MySQL 数据库
  4. 集成 Redis 数据库
  5. 集成 JOI 路由验证
  6. 集成 koa-session
  7. eslint、prettier 代码规范
  8. ejs 模板引擎
  9. 支持跨域、文件静态、多路由声明
  10. 支持测试覆盖
  11. 简单的文件存储服务(集成了阿里云)

运行

  1. config下,创建 config-[name].js 配置文件;
  2. 安装项目依赖,启动项目。
npm ci

# 开发启动
npm run watch

# 生产启动
npm start
# or
export NODE_ENV=production && node index.js

# 测试覆盖
npm run cov

接口

已经实现的接口,已梳理为接口文档,托管在APIPOST,在线查看

结构

├── .vscode                                // vscode 配置
├── app.js                                 // app入口文件
├── common                                 // 公共库
├── config                                 // 应用配置
├── docker-compose                         // Dokcer 部署示例
├── controller                             // 路由控制器
├── index.js                               // 启动文件
├── lib                                    // 工具库
├── logs                                   // 日志文件夹
├── middleware                             // 中间件
├── test                                   // 测试覆盖
├── models                                 // db model
├── public                                 // 静态资源文件夹
├── router                                 // 路由
├── schema                                 // 验证规则
├── service                                // 应用业务
└── views                                  // 模板

部署

Compose 部署

可以通过配置 Docker-Compose 结合 git-webhook 完成自动化部署,可看示例配置

Docker 启动

也可以通过 Docker 启动,需要注意的是,需要挂载项目文件到容器中,否则无法启动。

docker run -v "$(pwd)":/app -e NODE_ENV=production --name my-node-app  -p 81:3000 funnyzak/java-nodejs-python-go-etc node /app/index.js

以上是生产环境的启动命令,因此需要修改 config/config-production.js 配置文件。

  • -v "$(pwd)":/app 将当前目录映射到容器的/app目录。
  • -e NODE_ENV=production 设置环境变量NODE_ENVproduction
  • --name my-node-app 指定容器的名称为my-node-app
  • -p 81:3000 将容器的3000端口映射到主机的81端口。
  • funnyzak/java-nodejs-python-go-etc 是您要使用的镜像名称。
  • node /app/index.js 是要在容器中执行的启动命令。

参考

Contribution

If you have any questions or suggestions, please feel free to open an issue or pull request.

License

MIT License © 2021 funnyzak