a script to run docker-compose.yml using podman
Go to file
2021-12-24 18:55:30 +02:00
.github/ISSUE_TEMPLATE Update issue templates 2021-11-11 17:43:47 +02:00
docs add docs directory 2019-09-03 00:19:41 +03:00
examples add awx 17 example 2021-12-21 22:57:45 +02:00
scripts update readme and no arguments print help 2019-09-03 00:19:07 +03:00
tests fix hostname in test 2021-12-23 00:34:01 +02:00
.gitignore Python packaging 2019-08-21 22:45:53 +02:00
.pylintrc apply formating and add pylintrc 2019-03-23 21:42:04 +02:00
CODE-OF-CONDUCT.md Add Code of Conduct 2020-02-09 01:23:49 +02:00
CONTRIBUTING.md Readability fix for missing commands 2021-09-23 14:58:45 +03:00
LICENSE Initial commit 2019-03-04 10:52:30 +02:00
podman_compose.py FIXES #380: output to stderr 2021-12-24 18:55:30 +02:00
README.md Update README.md. Add link to podman dns plugin source 2021-12-24 14:05:46 +02:00
requirements.txt FIXES #370: bug-for-bug hanlding of .env 2021-12-10 01:01:45 +02:00
SECURITY.md Add Security Policy 2020-05-09 17:54:44 -04:00
setup.cfg Get version info with setup.cfg 2021-09-11 23:35:36 +03:00
setup.py FIXES #370: bug-for-bug hanlding of .env 2021-12-10 01:01:45 +02:00
test-requirements.txt Mode Python installation and test deps to requirement files 2021-04-29 19:19:14 +03:00

Podman Compose

An implementation of Compose Spec with Podman backend. This project focus on:

  • rootless
  • daemon-less process model, we directly execute podman, no running daemon.

This project only depend on:

  • podman
  • podman dnsname plugin (Optional requirement. If necessary, the containers be able to resolve each other if they are on the same CNI network. In distributions, it is usually found in the podman-plugins package)
  • Python3
  • PyYAML
  • python-dotenv

And it's formed as a single python file script that you can drop into your PATH and run.

References:

Alternatives

As in this article you can setup a podman.socket and use unmodified docker-compose that talks to that socket but in this case you lose the process-model (ex. docker-compose build will send a possibly large context tarball to the daemon)

For production-like single-machine containerized environment consider

For the real thing (multi-node clusters) check any production OpenShift/Kubernetes distribution like OKD.

Versions

If you have legacy version of podman (before 3.1.0) you might need to stick with legacy podman-compose 0.1.x branch. The legacy branch 0.1.x uses mappings and workarounds to compensate for rootless limitations.

Modern podman versions (>=3.4) do not have those limitations and thus you can use latest and stable 1.x branch.

Installation

Install latest stable version from PyPI:

pip3 install podman-compose

pass --user to install inside regular user home without being root.

Or latest development version from GitHub:

pip3 install https://github.com/containers/podman-compose/archive/devel.tar.gz

or

curl -o /usr/local/bin/podman-compose https://raw.githubusercontent.com/containers/podman-compose/devel/podman_compose.py
chmod +x /usr/local/bin/podman-compose

or inside your home

curl -o ~/.local/bin/podman-compose https://raw.githubusercontent.com/containers/podman-compose/devel/podman_compose.py
chmod +x ~/.local/bin/podman-compose

or install from Fedora (starting from f31) repositories:

sudo dnf install podman-compose

Basic Usage

We have included fully functional sample stacks inside examples/ directory.

A quick example would be

cd examples/busybox
podman-compose --help
podman-compose up --help
podman-compose up

A more rich example can be found in examples/awx3 which have

  • A Postgres Database
  • RabbitMQ server
  • MemCached server
  • a django web server
  • a django tasks

When testing the AWX3 example, if you got errors just wait for db migrations to end. There is also AWX 17.1.0

Tests

Inside tests/ directory we have many useless docker-compose stacks that are meant to test as much cases as we can to make sure we are compatible