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
solenoid
user - 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.json
atRUN_DIR/snapshot/package/package.json
- Determines the
node
engine. Defaults tooptions.engines.node.default || 0.6.x
. - Reads the ENVVARS from
-e|--app-env
(if any). - Restricts the filesystem to the
solenoid
user - Gets the
uid
andgid
of thesolenoid
user - Starts the application using
aeternum
andforza
.
-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"
}
}
}