Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
A build tool that uses Docker for Continous Delivery
Shell
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
scripts
src
tests
.gitignore
.travis.yml
CHANGELOG.md
LICENSE
README.md
circle.yml

README.md

Totally

Totally gives you a continuous delivery workflow for Docker.

It's opinionated software

  • Software that is continuously delivered is of higher quality.
  • Rapid feedback of your changes is paramount.
  • Repeatable deployments to all environments builds confidence.
  • You're not done till your users have seen your work.
  • Developing several modular microservices is superior to building a monolith.
  • Rapid change is to be embraced.

It targets applications that will be delivered as Docker images. So it's suited to developing server side software - such as web applications, microservices, etc.

A tour of the workflow

Say you work for a forward thinking Decoupled Inc., and you've decided to write a new microservice to calculate the price of your widgets. The first thing you would do is create a new cookie-cutter project and get it deployed to a staging environment that is accessible to the consumers of its API.

$ totally new decoupled/microservice whats-the-price
$ cd whats-the-price
$ totally run
...
Running at http://whats-the-price.staging/

That would create a new project using your company's microservice template, and get it running in a staging environment - in no more than 30 seconds.

And then you would lean over your cubicle wall, and say:

You: Hey Bob, you know you were asking me how to work out the price of widgets? Go check out this API I built for you at http://whats-the-price.staging/

Bob: Ummm... So like you said earlier, I should be able to query something like http://whats-the-price.staging/price?product=superior&quantity=64?

You: Yeah, give me a minute, I'll add that in.

And then you open up the right file, and add an HTTP GET route for /price, returning a fixed price of $64, and then:

$ totally run
...
Running at http://whats-the-price.staging/

You: Try now Bob.

Bob: Yes, that works for me. Can it handle a 20% discount for my big customer with say code=BIG?

You: Give me a minute.

So you get the picture. Totally does the plumbing using Docker to support a rapid development workflow where you want to get your work running in a production like environment rapidly.

Pre-requisites

A host running Docker that you can ssh to without having to type in a password (with your key set up). Totally will ssh to the box, and expect to be able to connect to Docker on it.

echo DOCKER_SSH_HOST=my-super-docker-fragalistic > ~/.totally

If you want to specify ssh ports, users, keys, etc., do it in your ~/.ssh/config file. Here's how I connect to my CoreOS Vagrant VM on my laptop:

Host my-super-docker-fragalistic
    User core
    IdentityFile ~/.ssh/coreos_insecure_ssh_key
    HostName 192.168.67.144

Install

On Mac OS X

brew tap pokle/docker
brew install totally    

On other Unix like systems, you need to simply install the totally script in somewhere in your $PATH such as /usr/local/bin

Contributing

Please fork the project, have a play with your changes, and get in touch with me, or send me a pull request! Easy.

Circle CI build status

Build Status

Something went wrong with that request. Please try again.