Jump start an application. solenoid is a binary script that does the following:
- Start an app:
solenoid start -p PIDFILE -u USERNAME -a APP_NAME -v APP_VERSION - Stop an app:
solenoid stop -p PIDFILE - Restart an app:
solenoid restart -p PIDFILE
When solenoid starts an application it performs the following operation:
- Creates the run direction
options.runDir - Creates the
solenoiduser - Fetches the application snapshot to
RUN_DIR/snapshot.tgz - Unpacks the snapshot to
RUN_DIR/snapshot/package - Removes the packed snapshot at
RUN_DIR/snapshot.tgz - Reads the
package.jsonatRUN_DIR/snapshot/package/package.json - Determines the
nodeengine. Defaults tooptions.engines.node.default || 0.6.x. - Reads the ENVVARS from
-e|--app-env(if any). - Restricts the filesystem to the
solenoiduser - Gets the
uidandgidof thesolenoiduser - Starts the application using
aeternumandforza.
-u, --app-user Username of the owner of the application.
-a, --app-name Name of the application.
-v, --app-version Version of the application.
-e, --app-env Environment vars as serialized JSON.
-p, --pidfile Location of the pidfile on disk of the aeternum process.
solenoid expects a configuration file $HOME/.solenoidconf with the following options:
{
"storage": {
//
// Valid pkgcloud storage provider configuration
//
"provider": "rackspace",
"username": "rackspace-username",
"apiKey": "rackspace-apiKey",
"container": "rackspace-container",
"region": "ord"
},
"instruments": [
//
// Instruments provider to send metrics and events to.
//
{
"host": "127.0.0.1",
"port": 8556
}
],
//
// Directory to run applications within.
//
"runDir": "/opt/run"
"engines": {
"node": {
"default": "0.6.x",
"path": "/opt/engines/node"
}
}
}