docker 制作node基础镜像运行js项目
先说做成的事,利用docker的node基础镜像,跟自己的纯js代码打包成新的镜像,把js函数通过接口的方式暴露出去提供给其他项目调用
需求: 最近接到一个需求, 需要把纯js代码制作成接口对外提供服务,鉴于之前项目中js是附属在页面中,依赖浏览器运行的,并不具备单独运行提供接口的能力。
之前在项目中也有需要运行js代码的需求, 那时候的js代码相对简单也就几十行,可以直接使用java的js引擎运行。
但这次js代码相对复杂,大小涉及到几十上百文件, 所以决定采取其他方式,此时node就是极其合适的选择, 首先node具备运行js的能力, 同时node也可以做web服务对外提供接口, 简直完美
废话不多说, 直接上代码
js代码结构
main.js为主要代码
运行效果
目前,通过node 当前js已经可以对外提供服务了
剩下的就是制作docker 镜像
进入 服务器 创建文件夹(我的文件夹是 docker_node_test1)
进入文件夹 Dockerfile 不多说 Order 是代码存储位置 名字叫什么无所谓
Dockerfile 文件内容 使用的基础镜像是 node:8.0-alpine 网上文章推荐 因为小
基本原理就是在生成得镜像中 创建一个文件夹 /home/Order 用来存储文件
同时把我的代码复制进去 这里是指刚好 我的代码也存在Order中
然后打包完镜像调用node命令直接运行main.js 这个开发调试一样
接下来 打包镜像
切换到Dockerfile所在的位置
运行一下命令(!!!! 别忘了最后那个 . 这个点很重要)
docker build --rm -t adu/node:v2 .
因为我之前打包过一个了所以很快
查看 当前镜像 v1 是之前打包的 v2是刚才打包的
运行测试
docker run -p 8081:8081 --name orderui -d adu/node:v2
搞定
对了 多说一句 因为我在代码中 监听的是8081 端口 Dockerfile中暴露的也是8081端口 这里我并没有测试 如果不一致会不会有问题, 估计是会有的
代码链接 https://pan.baidu.com/s/1hW22ug5PPNF9wjfPcOw2tQ
g0cy