Skip to main content

Use docker-compose to manage multiple apps on a single host

Project description

Docker0s uses docker-compose to manage multiple containerised apps on a single host.

PyPI Documentation Status Tests Test coverage

Bring together standard docker-compose files across multiple projects in a single simple manifest file, written in either YAML or Python with pre- and post-operation hooks, to deploy to a single host.

It’s designed for small self-hosted low-maintenance deployments which don’t need the complexity of Kubernetes - think k8s with zero features and a much simpler config syntax, with simple app manifests instead of helm charts.

There is a collection of ready-to-use app manifests at docker0s-manifests, with examples for how to deploy them to your host.

Quickstart

Install:

pip install docker0s

Put together a manifest in YAML as d0s-manifest.yml:

apps:
  traefik:
    extends: git+https://github.com/radiac/docker0s-manifests.git#traefik
    env_file: traefik.env
  smtp:
    compose: smtp.yml
  website:
    type: RepoApp
    extends: "git+ssh://git@github.com:radiac/example.com.git@main"
    env:
      DOMAIN: example.radiac.net
host:
  name: example.radiac.net

or in Python as d0s-manifest.py, using subclassing to perform actions before and after operations and add custom functionality:

from docker0s import RepoApp

class Website(RepoApp):
    # Clone a repo to the host and look for docker-compose.yml in there
    extends = "git+ssh://git@github.com:radiac/example.com.git@main"
    env = {
        "DOMAIN": "example.radiac.net"
    }

    # Subclass operation methods to add your own logic
    def deploy(self):
        # Perform action before deployment, eg clean up any previous deployment
        super().deploy()
        # Perform action after deployment, eg push additional resources

class Vagrant(Host):
    name = "vagrant"

See writing manifests for a full reference

Then run a command, eg:

d0s deploy
d0s up
d0s restart website.django
d0s exec website.django /bin/bash
d0s cmd website app_command arguments

See commands for a full command reference

Project details


Download files

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

Source Distribution

docker0s-2.0.0.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

docker0s-2.0.0-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file docker0s-2.0.0.tar.gz.

File metadata

  • Download URL: docker0s-2.0.0.tar.gz
  • Upload date:
  • Size: 22.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for docker0s-2.0.0.tar.gz
Algorithm Hash digest
SHA256 fa1477684008e7d779c87e3744276d991fa96354a58174e683871f0cb9c1073c
MD5 4aad0a8a31081a83b26331cbeb39d242
BLAKE2b-256 3353ea6cd712cbcbe75356c0fd5c82bda67f4e0b6038c0c8a3be1754b9a7d7a7

See more details on using hashes here.

File details

Details for the file docker0s-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: docker0s-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 25.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.11.1

File hashes

Hashes for docker0s-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f2e10c5ce53a02e0c6a3c29103385b61de7addf7f13ef87513d7ba1443443a01
MD5 ccebf37e1664641bad3919d01b9b40f3
BLAKE2b-256 a4377a674a12e807f6ac1a6766e14a8cea4671696534a5fa5964c92db3d2ced0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page