ringojs 使用rp 包管理web 应用依赖
rp 是一个类似npm 的包管理工具,我们可以使用package.json 定义依赖
然后执行rp install 即可,类似ringo-admin 的功能
其中packages 类似node 的node_modules,安装后的包在packages 目录中
参考代码
- 项目结构
├── Dockerfile // dockerfile ├── README.md ├── app │ ├── app.js // app module │ ├── index.js // app module 入口 │ └── package.json // app 包信息 ├── boot.js ├── docker-compose.yaml // docker-compose 配置 ├── index.js // stick web app 入口 ├── package.json // 定义项目以及包依赖 └── user ├── package.json // user module └── user.js // user module
- 代码说明
主要是stick 的使用以及module 的定义,引用
app/app.js exports.app= { name:"dalong", age:33, type:"app" } app/index.js: const {app} =require("./app") exports.app=app; app/package.json : 入口 { "version": "1.0.0", "main": "app.js", "license": "MIT" } index.js : app 入口 类似 express 框架 const {app } = require("./app") const {user} = require("./user") const boot = require("./boot") console.dir(boot.run()) var {Application} = require('stick'); var response = require("ringo/jsgi/response") var app2 = exports.app = new Application(); app2.configure('route'); app2.get('/', function(request) { return { body: ['Hello World dalongdemo'], headers: {'Content-Type': 'text/html'}, status: 200 } }); app2.get("/user",function(request){ return response.html("<div>"+JSON.stringify(request.headers)+"<br>"+JSON.stringify(user)+"</div>") }) if (require.main == module) { require('ringo/httpserver').main(module.id); } Dockerfile: FROM dalongrong/ringojs-docker:1.2.1-local WORKDIR /app COPY . /app/ RUN rp install -y ENTRYPOINT [ "ringo","index.js","-H","0.0.0.0"] docker-compose.yaml: version: "3" services: app: image: dalongrong/ringojs-app-demo build: ./ ports: - "8080:8080"
构建&&运行
- 本地运行
rp install -y 备注: rp 安装 ringo-admin install ringo index.js
- docker 运行
docker-compose build docker-compose up -d
运行效果
安装的包pakcages
web 运行界面