Skip to main content

A supervisor for docker-compose apps.

Project description

Harbormaster

Harbormaster is a small utility that lets you easily deploy multiple Docker-Compose applications.

Installation

Installing Harbormaster is simple. You can use pipx (recommended):

$ pipx install docker-harbormaster

Or pip (less recommended):

$ pip install docker-harbormaster

You need to also make sure you have git installed on your system.

Usage

Harbormaster uses a single YAML configuration file that's basically a list of repositories containing docker-compose.yml files/apps to deploy:

apps:
  myapp:
    url: https://github.com/someuser/somerepo.git
    branch: main
    environment:
      FOO: bar
      MYVAR: 1
  otherapp:
    url: https://gitlab.com/otheruser/otherrepo.git
    compose_filename: mydocker-compose.yml

Then, just run Harbormaster in the same directory as that configuration file. Harbormaster will parse the file, automatically download the repositories mentioned in it (and keep them up to date).

Harbormaster only ever writes to the working directory you specify, and nowhere else. All the data for each Compose app is under <workdir>/data/<appname>, so you can easily back up the entire data directory in one go.

WARNING: Make sure the Compose config in each of the repos does not use container_name, otherwise Harbormaster might not always be able to terminate your apps when necessary.

Handling data directories

Due to the way Compose files work, you need to do some extra work to properly tell Harbormaster about your volumes.

Harbormaster provides two kinds of directories: Data and cache.

Data is anything that you want to keep. Data directories will never be deleted, if you remove an app later on, its corresponding data directory will be moved under the archives/ directory and renamed to <appname>-<deletion date>.

Cache is anything you don't care about. When you remove an app from the config, the cache dir is deleted.

Harbormaster will look for a file called docker-compose.yml at the root of the repo, and look for the specific strings {{ HM_DATA_DIR }} and {{ HM_CACHE_DIR }} in it. It will replace those strings with the proper directories (without trailing slashes), so the volumes section of your Compose file in your repository needs to look something like this:

volumes:
  - {{ HM_DATA_DIR }}/my_data:/some_data_dir
  - {{ HM_DATA_DIR }}/foo:/home/foo
  - {{ HM_CACHE_DIR }}/my_cache:/some_cache_dir

Replacements

Sometimes, the user needs to give access to paths that already exist on their system, or specify more parameters in the Dockerfile. This is where replacements come in.

Replacements are basically custom replacement strings (like the data directory strings) that you can specify yourself.

For example, if the user needs to specify a directory with their media, you can ask them to include a replacement called MEDIA_DIR in their Harbormaster config file, and then use the string {{ HM_MEDIA_DIR }} in your Compose file to mount the volume, like so:

volumes:
  - {{ HM_MEDIA_DIR }}:/some_container_dir

Harbormaster will replace that string wherever in the file it finds it (not just the volumes section, and the user can specify it in their Harbormaster config like so:

someapp:
  url: https://gitlab.com/otheruser/otherrepo.git
  replacements:
    MEDIA_DIR: /media/my_media

Keep in mind that if the variable is called VARNAME, the string that will end up being replaced is {{ HM_VARNAME }}. If the variable is not found, it will not be replaced or touched at all. This is to avoid messing with any unrelated templates in the Compose file.

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

docker-harbormaster-0.1.6.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

docker_harbormaster-0.1.6-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file docker-harbormaster-0.1.6.tar.gz.

File metadata

  • Download URL: docker-harbormaster-0.1.6.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.10

File hashes

Hashes for docker-harbormaster-0.1.6.tar.gz
Algorithm Hash digest
SHA256 92e3ba66c55d19b24c79cbfa2ed257f3ad4a02d39b9bc4880d2377a2923adedd
MD5 ecc447766fd5a3a2a570bce85e03343c
BLAKE2b-256 831d907444f3b90c421d12bbfb1f1de672e1495bf142193f61033a3387a48469

See more details on using hashes here.

File details

Details for the file docker_harbormaster-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: docker_harbormaster-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.10

File hashes

Hashes for docker_harbormaster-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 c14e96071b397b9e9cdec1c19de6dc6d0ebee82d2a68ce6a62f1a4c0a4b4617b
MD5 413954ed46cc9b13de859d7bdf934613
BLAKE2b-256 c3c977e0569af13e6cc5827c0547309be97c4f09a9e2ca35a3f993685e5ed050

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