This is a micro service which manages other services.
You may also use @norjs/portal-service to implement the routing part of the configuration file.
npm install -d @norjs/manager-service
Configuration file named nor.json:
{
"name": "my-awesome-app",
"services": {
"backend": {
"path": "./backend",
"production": true,
"development": true,
"autoStart": true,
"env": {
"NODE_LISTEN": "./backend.sock"
}
},
"frontend": {
"path": "./frontend",
"production": true,
"development": true,
"autoStart": true,
"env": {
"NODE_LISTEN": "localhost:4000"
}
}
}
}Where ./backend and ./frontend are directories with standard package.json files and correct NPM rules for
installing and starting the service.
Please note, that if you use backend or frontend, that will be recognized as a NPM package name, and
./node_modules/NAME will be used instead as a path.
If you're using NPM package names as a path, you must use npm install to install your projects. (See an issue #7 which would add support for the manager to do it for you.)
Executing an install action for nor-manager-service will run the npm install command for each matching local service.
curl -X POST localhost:3000/install -H "Content-Type: application/json" -d '{"payload":{"development": true}}'
The payload can have any combination of properties:
name- Filter by a package name, as astring.production- Filter services by production flag, astrue|false|undefineddevelopment- Filter services by development flag, astrue|false|undefineddebug- Enable additional information in the response (eg. results from stdout), this may require memory.
Executing a start action for nor-manager-service will start each service and write their logs to the manager's console.
curl -X POST localhost:3000/start -H "Content-Type: application/json" -d '{"payload":{"development": true}}'
The payload can have any combination of properties:
name- Filter by a package name, as astring.production- Filter services by production flag, astrue|false|undefineddevelopment- Filter services by development flag, astrue|false|undefined
Executing a status action for nor-manager-service will display information for each service.
curl -X POST localhost:3000/status -H "Content-Type: application/json" -d '{"payload":{"development": true}}'
The payload can have any combination of properties:
name- Filter by a package name, as astring.production- Filter services by production flag, astrue|false|undefineddevelopment- Filter services by development flag, astrue|false|undefined
You can configure custom environment variables with the env property.
Any action should have a boolean property production and/or development as a boolean.
Otherwise the service will not be started nor installed unless it is named directly in the command.
The nor-manager-service accepts following environment options:
NOR_MANAGER_CONFIG-- The path to configuration, defaults to./norjs.jsonNOR_MANAGER_SERVICE_PATH-- The path to configuration root directory, defaults to directory ofNOR_MANAGER_CONFIGNODE_LISTEN-- Where to start the service. Defaults to./socket.sock. Can also be ahostname:portorportfor TCP connections.
To test a HTTP service at localhost:3000:
curl -X POST localhost:3000/status -H "Content-Type: application/json" -d '{"payload": {"debug": true}}'