Skip to main content

Paasify your docker-compose files

Project description

Paasify

Gitter PyPI PyPI - Downloads piwheels (including prereleases) GitHub commit activity License: GPL v3

PyPI - Python Version PyPI - Format PyPI - Status


Please :star: this project if like it of if you want to support it!

:warning: This project is currently in alpha stage, use at your own risks! :warning:

Official documentation is available on [https://barbu-it.github.io/paasify/]


Deploy your docker-compose applications with ease and manage your infrastructure as code!

Paasify is a Python tool that will help you to deploy large collections of docker-compose.yml files. It's an thin overlay to the docker compose command and it will generate the docker-compose.yml you need. It provides some ways to fetch Apps collections, to deploy them and then ensure their state can be committed into version control.

From an high level perspective, this looks like:

Overview

This project try to overstep the missing gap between the docker-compose deployment and static code in way to achieve infrastructure as a code. If you are asking yourself on why you would use Paasify:

  • Manage a lot of differents docker-compose.yml
  • Make your docker-compose.yml based infrastructure DRY
  • Write large collections of docker-compose.yml apps once, deploy them many times
  • Integrate your apps into other services, like you can automagically add Traefik labels to your containers
  • Deploy apps in a sequential way
  • Commit your infrastructure configuration into git

:memo: Table of Content

:fire: Quickstart

There are different ways to install Paasify:

Installation with pip

Install Paasify with pip:

pip install paasify
paasify --help

Installation with docker

The idea is to create a simple alias that will call the paasify image:

alias paasify='docker run --rm -w /work -v $PWD:/work -ti ghcr.io/barbu-it/paasify:latest paasify '

paasify --help

Usage/Examples

You need to have docker daemon running. See requirements section for further details. Let's try to deploy a Hello World project with paasify. It consists in deploying a proxy, for managing incoming traffic (we uses Traefik here) and a simple page that will list all the services you deployed with paasify.

paasify new devbox
cat <<EOF
# My new project

sources:
  - name: community
    remote: https://github.com/barbu-it/paasify-collection-community

config:
  vars:
    app_expose_ip: 127.0.0.1
    app_domain: ${app_expose_ip}.nip.io

  tag_prefix:
    - homepage
    - traefik-svc

stack:
  - app: traefik
  - app: homepage
  - app: community:wordpress
    tags:
      - phpmyadmin
EOF

paasify apply

Then you can visit: http://homepage.127.0.0.1.nip.io. Of course you can manage your own domains and manage SSL with let's encrypt. To have an idea of what app you can install, please checkout official collections:

:sparkles: Overview

Features

  • Only use the classical syntax of docker compose
  • Allow to use any app without effort
  • Transform your own applications into collection, and publish them as git repositories
  • Allow to centralized collections into git repositories
  • Provides a powerful docker-compose.<TAG>.yml assemblage
  • Provides a simple but powerful variable management and templating model
  • Provides jsonnet support for more complex transformations
  • Allow to track your infrastructure changes into git

Please check the documentation to know more and see the Road Map below to see what's coming.

Documentation

The main documentation website is at https://barbu-it.github.io/paasify/.

Requirements

The following system requirements are:

  • Linux x86 based OS (not tested yet on other platforms than Linux so far)
  • docker
  • docker compose or docker-compose
  • jq

For development:

Environment Variables

You may use the following environment variables to adjust paasify behavior:

PAASIFY_DEBUG=false: Show extra log levels if set to true

PAASIFY_TRACE=false: Show python traces if set to true

:question: Getting help

Known issues

  • Paasify is still at this alpha stage, and not recommended (yet) for production.
  • Paasify has only been tested on Linux, more platform may come later.
  • Paasify heavily use the usage of docker labels, so deploying in an existing infrastructure may lead to conflicts.

FAQ

Does paasify involve any long running services ?

Nope, Paasify build your docker-compose.yml files and do a docker compose up. It's a simple CLI program that will super-charge your docker compose commands.

Is there a web UI for deployments ?

Nope, the intended audience of this tool is people who want to do code as infrastructure. It may be the purpose of another project tho.

Is it possible to have it in Go?

Go is a pretty good language for this kind of tool, however the author does not known Go, so it's too late now. Use the docker image to get a no install setup.

Support

There is no support outside of community support at this stage of the project. The project is still considered as immature, getting into the project as the date of today may still require you to be comfortable with programming.

Feedback

If you have any feedback, please open an issue.

:pray: Develop

Here are the basic step to hack into paasify code. A more complete guide is available in the documentation.

Installation with git

Clone the project

  git clone https://github.com/barbu-it/paasify

Go to the project directory

  cd paasify

Install dependencies

  task install

Running Tests

To run tests, run the following command

  task run_tests

Run the quality suite

  task run_qa

Contributing

Contributions are always welcome!

See contributing.md for ways to get started.

Please adhere to this project's code of conduct.

:earth_africa: Project information

Roadmap

  • Volume and secret management
  • Docker Swarm support

License

GNU General Public License v3.0

Authors

This project is brought to you thanks to Barbu-IT.

Used By

This project is used by the following companies:

  • Barbu-IT

Related

Here are some related projects:

Support this project

You can :star: this project, contribute or donate to original author @mrjk:

  • Bitcoin: bc1qxdtn24vl9n8e04992dwcq3pdumes0l2dqardvh

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

paasify-0.1.1.tar.gz (146.2 kB view details)

Uploaded Source

Built Distribution

paasify-0.1.1-py3-none-any.whl (159.0 kB view details)

Uploaded Python 3

File details

Details for the file paasify-0.1.1.tar.gz.

File metadata

  • Download URL: paasify-0.1.1.tar.gz
  • Upload date:
  • Size: 146.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.10.8 Linux/5.15.85-1-MANJARO

File hashes

Hashes for paasify-0.1.1.tar.gz
Algorithm Hash digest
SHA256 def3e2f9b4977105543b097fc82ace12ccccddd9ae2a181d899c0f835249b7f0
MD5 decc76ed0170cfff6de1dd8b2c357bd0
BLAKE2b-256 ab225ad7e9f6ab5b0910c39918b7cbdf4d39c5ad7f2e6600bd4ee84b382485a0

See more details on using hashes here.

File details

Details for the file paasify-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: paasify-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 159.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.10.8 Linux/5.15.85-1-MANJARO

File hashes

Hashes for paasify-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2726af55e7301084e53035b593a2e6698baa2f59e39b85742ef33195901954a3
MD5 5ebbeef3ba71f9ead94e55285a68ecf3
BLAKE2b-256 2052d1cdbfb10d4f8496e07ae0249b90bf43db5474e1748f4f33bf98385008dd

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