使用node.js容器运行接口demo

使用node.js容器运行接口demo

docker pull node
docker run -itd --name node-test -p IPa:IPb node

IPa是虚机对外暴露的端口,IPb是node.js服务监听的端口。

-i 表示打开STDIN,用于控制台交互

-t 表示分配tty设备,支持终端登录

-d 表示后台运行,不会占据你的shell前台导致无法输入命令

server.js

参考 https://blog.csdn.net/qq_34759481/article/details/103598895

这样行:

var http = require('http');
var fs = require('fs');

http.createServer((req,res)=>{
    var url = req.url;
    if (url === '/getcode') {
        fs.readFile('./data.json',(err, data)=>{
            if(err){
                res.write("server error\n");
                res.end();
            }else{
                res.write(data);
                res.end()
            }
        });
    } else {
        res.write("api error\n");
        res.end();
    }
}).listen(8080)

这样不行。

var http = require('http');
var fs = require('fs');

http.createServer((req,res)=>{
    var url = req.url;
    if (url === '/getcode') {
        fs.readFile('./data.json',(err, data)=>{
            if(err){
                res.write("server error\n");
            }else{
                res.write(data);
            }
        });
    } else {
        res.write("api error\n");
    }
    res.end();
}).listen(8080)

这种的能收到api error,收不到data。

请求 IP:8080/getcode之前

容器内运行的指令需要是script目录下 node server.js &

不能是node …/…/server.js,不然可能./data.json的.指代不明导致返回server error

加上 &保持后台运行比较好

http、fs模块是node原生镜像自带模块。

也可以基于express模块开发,但express模块不是自带的,需要自己解决。

data.json

{
    "code" : "0000"
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值