一,创建koa项目
npm init -y
npm install --save koa
安装相关的koa依赖
npm install koa koa-router koa-body @koa/cors koa-json -S
npm install koa-combine-routers -S
1,新建api文件夹,里面写业务接口代码a.js
function first(ctx) {
ctx.body = {
message: "a业务的第一个接口"
};
}
function second(ctx) {
ctx.body = {
message: "a业务的第二个接口"
};
}
module.exports = {
first,
second
};
2,新建routes文件夹,里面新建两个文件
aRouter.js分发a业务的路由
const Router = require("koa-router");
const ayewu = require("../api/a");
const router = new Router();
router.get("/firstGet", ayewu.first);
router.get("/secondGet", ayewu.second);
module.exports = router;
routes.js整合路由
const combineRoutes = require("koa-combine-routers");
const aroutes = require("./aRouter");
module.exports = combineRoutes(aroutes);
3,index.js作为项目入口
const koa = require("koa");
const app = new koa();
const router = require("./routes/routes");
app.use(router());
app.listen(3001);
4,根目录运行node ./index.js
5,修改package.json
"scripts": {
"start": "node index.js"
},
二,拉取node镜像
docker pull node
三,编写 Dockerfile 将 koa应用 Docker 化
#使用14.15.0的node版本作为运行软件
FROM node:14.15.0
#将此目录作为工作目录
WORKDIR /usr/src/app
#复制本目录下的package文件(源文件)到工作目录(目标目录)
COPY package*.json ./
#在工作目录执行npm install
RUN npm install
#将本本录下所有文件复制到目标目录
COPY . .
#EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。
EXPOSE 3001
#命令行执行npm run start
CMD [ "npm", "start" ]
构建镜像的时候 node_modules 的依赖直接通过 RUN npm install 来安装,项目中创建一个 .dockerignore文件来忽略一些直接跳过的文件:
node_modules
npm-debug.log
然后运行构建命令
docker build -t nodewebserver .
该命令将koa项目镜像化。
四,启动 NodeServer 容器
基于刚刚构建的 NodeWebServer 镜像 启动一个名为 NodeServer 的容器来提供接口服务3001端口,并映射宿主的5000端口:
docker run -p 5000:3001 -d --name nodeserver nodewebserver
于是浏览器访问接口: