{"bin":{"ship":"./bin/ship"},"bugs":{"url":"https://github.com/strapper/shipper/issues"},"dist":{"shasum":"9a80e68ba1b188cbf1623edf42b4ab15150cbff7","tarball":"https://registry.npmjs.org/shipper/-/shipper-0.1.0.tgz","integrity":"sha512-TFHOe8uoBhC5IkkaocvL5BuxzUekhrEyxwPkQZq1P8BNQsuxeAjCSjyEHr9nQXvlY2D47vjeIWzV0em5uLPBrw==","signatures":[{"sig":"MEYCIQDquMgGB7ubwnOSc7+9CRYwROTXJ/Jq332q3SqpgSiAfAIhAN/wt/9+pfHBrGPa90BYcKJC/oCaKp6jnJngReiRlZP/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}]},"name":"shipper","_from":".","author":{"name":"Gerald Monaco"},"readme":"# shipper\n\nShipper is scriptable deployment for Docker containers.\n\n## Overview\n\nShipper abstracts your stack to *servers* and *applications*. A server is\nsomething that runs a Docker daemon. It could be an EC2 instance, a vagrant\nbox, or even another Docker container. An application is just a Docker\ncontainer.\n\nOnce you follow this abstraction, deploying and scaling your stack becomes\nincredibly simple. Instead of baking and deploying machine images like AMIs,\nyou can just deploy an application to any running server.\n\n## Installation\n\n    $ npm install -g shipper\n\n## Usage\n\n### Images\n\nShipper currently uses Docker container images. You can generate an image by\nrunning:\n\n    $ docker export container > image.tar\n\n### Shipfiles\n\nShipfiles are standalone scripts for deploying your servers and applications.\nSimply create a file named ```Shipfile``` and run ```ship``` from the terminal.\nShipfiles are written in CoffeeScript.\n\n#### Shipfile\n\n````coffee\nSIMPLE_SERVER =\n  ec2:\n    ami:             'ami-53aef83a'\n    accessKey:       process.env.AWS_ACCESS_KEY\n    secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY\n    region:          'us-east-1'\n    type:            't1.micro'\n    securityGroups:  [ 'shipper' ]\n    ssh:\n      user: 'ubuntu'\n      name: 'shipper'\n      key:  '~/shipper.pem'\n\nship 'release', ->\n  boot 'ec2', SIMPLE_SERVER, (err, server) ->\n    server.start 'docker_image.tar', ['echo', 'hello world'], (err) ->\n      console.log \"upload: #{err}\"\n\n    server.start 'docker_image.tar', ['echo', 'hello world'], (err) ->\n      console.log \"upload: #{err}\"\n````\n\n### Library\n\nYou can also use shipper as a node library. Just ```require('shipper')```\nand use the same API as Shipfiles.\n\n### CoffeeScript Example\n\n````coffee\nshipper = require 'shipper'\nmonitor = require './monitor'\n\nmonitor.on 'heavy traffic', ->\n  shipper.boot 'ec2', WEB_SERVER, (err, server) ->\n    server.start 'web server.tar', ['node', './server.js'], (err) ->\n      console.log 'automatically scaled'\n````\n\n## API\n\n### boot(provider, server, [overrides], callback)\n\n* provider ```String``` The provider (e.g. ```ec2```) to use.\n* server ```Object```\n  * ec2 ```Object``` Amazon EC2 Configuration. (See below)\n* overrides ```Object``` Any additional overrides. (See below)\n* callback ```Function``` called when the server starts or an error occurs.\n  * error ```Error```\n  * server ```Server``` object\n\nProvisions a new server on the specified provider. The provider, server, and\noverrides arguments are split up so that you can define a semantic server and\nthen provision it across different providers without changing your code.\n\n#### Amazon EC2\n\n* ami ```String``` (See below)\n* accessKey ```String```\n* secretAccessKey ```String```\n* region ```String``` (e.g. ```us-east-1```)\n* type ```String``` (e.g. ```t1.micro```)\n* securityGroups ```Array``` Security groups to apply. (See below)\n* ssh ```Object``` SSH Configuration\n    * user ```String``` SSH user\n    * name ```String``` AWS key-pair name.\n    * key ```String``` Path to private key file.\n    * port ```Integer``` (default: 22)\n\nLaunches an Amazon EC2 instance of the given AMI, connects to it via SSH\nand creates a tunnel to the Docker daemon. Note that ```securityGroups```\nmust contain a group that allows inbound access to ```ssh.port```.\n\nThe AMI must be running Linux 3.8 or above, and have an SSH and Docker daemon\ninstalled and configured.\n\n### Class: Server\n\n```Server``` is not intended to be used directly. Use the ```boot()``` method\nto create a new Server instance.\n\n#### server.start(image, command, [options], callback)\n\n* image ```String``` Path to a Docker container image.\n* command ```Array``` The command to execute on the container.\n* callback ```Function``` called when the application has started.\n  * error ```Error```\n\nThe specified image will be uploaded to the server, and a new container will\nbe created and started.\n\n## License\n\nCopyright (c) 2013 Gerald Monaco. See the LICENSE.md file for license rights\nand limitations (MIT).","engines":{"node":">=0.10.0"},"license":"MIT","_npmUser":{"name":"devknoll","email":"gerald@gmonaco.me"},"keywords":["docker","amazon","cloud","deploy"],"repository":{"url":"git://github.com/strapper/shipper.git","type":"git"},"_npmVersion":"1.3.11","description":"Scriptable deployment for Docker containers.","maintainers":[{"name":"devknoll","email":"gerald@gmonaco.me"}],"dependencies":{"pork":"0.1.x","ssh2":"0.2.x","aws-sdk":"1.7.x","request":"2.27.x","commander":"2.0.x","coffee-script":"1.6.x"},"readmeFilename":"README.md","_id":"shipper@0.1.0","version":"0.1.0"}