Skip to main content
This is a pre-production deployment of Warehouse. Changes made here affect the production instance of PyPI (
Help us improve Python packaging - Donate today!

A docker deployment tool based on fabric and docker-compose

Project Description


A docker deployment tool built in python. It is based on fabric and uses docker-compose to orchestrate and manage containers. You can use it to build images, push images and trigger updates on remote machines.


To install Skeppa you need Python 2.7, docker and docker-compose.



pip install skeppa


pip install git+git://

Getting started

First off, head to your project and install skeppa: pip install skeppa.

Time to setup deployment instructions. This simple example below build a image called app, push it to a registry, then deploy on remote machine using the docker-compose file.

  1. touch skeppa.yaml

  2. In your skeppa.yaml, add the following:

        project: test-project
        user: ssh-user
        path: /home/youruser/yourproject/
        key_filename: ~/.ssh/
            name: app
            path: app
        compose_files: docker-compose.yml

    (This example requires docker image called ``app`` in your project folder, a working docker repository and a working ``docker-compose.yml``).

    Want a full annotated `skeppa.yaml <>`__?

  3. Then run skeppa prod setup, this will upload docker-compose.yml to your prod path.

  4. Time to build a docker image of your app skeppa prod build

  5. Now send the image you just built to your registry skeppa prod push

  6. Finally type skeppa prod deploy to deploy the image on your remote machine and create running containers.

  7. Done!

Want more examples?


  • How can I supply env-variables to skeppa?
    • Since skappa is based on fabric just add -c yourfile.env when running your command. Skeppa will by default try load either skeppa.env, fabricrc.txt or .fabricrc from your cwd.
  • How can I include env-variables in my skeppa.yaml?
    • Just define your variables like this {{ MY_VAR }}. Example: host: {{ HOST }}.
  • Can I define my own custom skeppa.yaml, such as skeppa-prod.yaml?
    • Sure! Add the argument -skeppaconfig in your command, like this: skeppa prod ping  -skeppaconfig skeppa-prod.yaml


The tool consists of 4 commands, they can run in conjunction with eachother.

Command Description Example
setup Initializes you application by creating the necessary directories/files. Must run first skeppa <environment> setup
build Builds docker images specified in config skeppa <environment> build
push Pushes docker image to registry skeppa <environment> push
deploy Pulls down docker image on remote and runs docker-compose up skeppa <environment> deploy


The name is a wordplay with the swedish word for “to ship” = “skeppa”.

Git hooks

These hooks will automatically bump the application version when using git flow release ...

ln -nfs $PWD/git-hooks/ .git/hooks/post-flow-release-start
ln -nfs $PWD/git-hooks/ .git/hooks/post-flow-hotfix-start


Want to contribute? Awesome. Just send a pull request.


Skeppa is released under the MIT License.

Release History

Release History

This version
History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


History Node


Download Files

Download Files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

File Name & Checksum SHA256 Checksum Help Version File Type Upload Date
skeppa-2.0.1.tar.gz (10.8 kB) Copy SHA256 Checksum SHA256 Source May 21, 2016

Supported By

WebFaction WebFaction Technical Writing Elastic Elastic Search Pingdom Pingdom Monitoring Dyn Dyn DNS Sentry Sentry Error Logging CloudAMQP CloudAMQP RabbitMQ Heroku Heroku PaaS Kabu Creative Kabu Creative UX & Design Fastly Fastly CDN DigiCert DigiCert EV Certificate Rackspace Rackspace Cloud Servers DreamHost DreamHost Log Hosting