GithubHelp home page GithubHelp logo

hms's Introduction

hms

Ship all kinds of services.

npm install -g hms

Afterwards you should have an command line tool called hms.

NB. even though the terms refer to dock and docks it is not meant to be read as containerized Docker images. This project will not help you ship Docker images.

Getting started

First ssh to a remote server and install hms. Then start up a terminal.

hms run-terminal

In a new folder start the dock (or multiple docks as seperate processes). The dock will run your apps

hms run-dock localhost:10002 --tag my-dock --port 10003 # add a some tags

localhost:10002 is the address to the terminal running on the machine, the newly created dock will run on localhost:10003.

Then on your local machine add the remote

hms remotes add my-remote [email protected]

hms uses ssh to contact the server so [email protected] should be similar to the arguments you passed to ssh. Then add a simple node app

hms add my-remote my-app --start 'node .' --build 'npm install' --tag my-dock
hms info my-remote my-app

The --start argument is your start script, --build is your build script and --docks tells hms to deploy it to 1 dock.

You are now ready to deploy your service. Goto your local app folder and do

hms deploy my-remote my-app
hms info my-remote my-app

The info output should verify that the app is running.

Commands

All commands have the following syntax

hms [command] [remote] [service|dock?] [options]

hms remotes

Manage and verify remotes.

  • hms remotes add [remote-name] [remote-url] to add a new remote

  • hms remotes remove [remote-name] to remove a remote

  • hms remotes to list all remotes

  • --key,-k to specify an explicit ssh key. Per default ~/.ssh/id_rsa and the ssh agent is used.

hms docks [remote] [dock-name?]

List the docks on a given remote. Detailed information about the services on the given dock is printed if a dock name is specified.

hms services [remote] [service-name?]

List the services on a given remote. Detailed information about the service, and the docks it is running on, is printed if a service name is specified.

hms info [remote] [service-name]

Print detailed information about a service, and the docks it is running on, on a remote.

hms add [remote] [service-name]

Add a new service.

  • --start,-s to specify a start script. Ie. node . to start a node service
  • --build,-b to specify a build script. Ie. npm install . to install node modules
  • --tag,-t to specify the docks tags to match when choosing where to deploy to.
  • --limit,-l to set a max limit on the number of docks to deploy to.
  • --env,-e to set env varibles. Format is ENV_VAR=value if more than one env variable is needed multiple --env can be used.

hms update [remote] [service-name]

Update an existing service. Accepts the same options as hms add. Note that update will not restart the service. To do this just issue a hms restart

To delete an env variable just set it to an empty string, i.e. ENV_VAR=

hms deploy [remote] [service-name]

Upload cwd as a tarball to service-name and deploy and restart it.

  • --revision to set a deploy revision tag. Defaults to git describe if you are in a git repo.

After deploying hms will tail service output and print it to stdout until you hit ctrl+c.

hms remove [remote] [service-name]

Stop and remove a service.

hms start|stop|restart [remote] [service-name]

Send a start/stop/restart signal the service. All restarts can be done gracefully by listening for SIGTERM and exiting nicely.

hms ps [remote] [service-name?]

(deprecated, please use info instead)

List processes running on all docks. Omit the service name to list all processes.

  • --env to also list the environment that the processes use.

hms log [remote] [service-name?]

Tail the log of a service. Omit the service name to tail all services. hms does not save any logs so this is just the live tail of stdout/stderr and various events.

Remote services

Run the following commands on your remote server that you want to deploy to

hms run-terminal

Starts a "build-and-distribute" hub that you can deploy to. After you deploy to a terminal it will run the build script and distribute the build to the docks.

  • --port,-p to change the port the terminal binds to. Defaults to 10002
  • --db to set the db file

hms run-dock [remote]

Starts a dock that can run and manage services.

  • --id,-i to give the dock an optional id. Defaults to hostname
  • --port,-p to change the port the dock binds to. Defaults to 10002
  • --tag,-t to give this dock some tags that you can match when deploying
  • --db to set the db file

License

MIT

hms's People

Contributors

feross avatar freeall avatar gausby avatar jmosbech avatar mafintosh avatar sorribas avatar watson avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.