Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Podman Compose

Pylint Test: Unit tests  PyTest

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: It is usually found in the podman-plugins or podman-dnsname distro packages, those packages are not pulled by default and you need to install them. This allow containers be able to resolve each other if they are on the same CNI network.
  • 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.

If you are upgrading from podman-compose version 0.1.x then we no longer have global option -t to set mapping type like hostnet. If you desire that behavior pass it the standard way like network_mode: host in the YAML.

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

Unit tests with pytest

run a pytest with following command

python -m pytest pytests

Metadata

Release files for v-podman-compose 1.0.4b1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for v-podman-compose 1.0.4b1
File Size Uploaded
v-podman-compose-1.0.4b1.tar.gz 33.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for v-podman-compose 1.0.4b1
File Interpreter ABI Platform
v_podman_compose-1.0.4b1-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 65.7 kB

Release files / v-podman-compose-1.0.4b1.tar.gz

Download URL v-podman-compose-1.0.4b1.tar.gz
Size 33.6 kB
Tags Source
SHA-256 checksum
How to use checksums
4691a65192207f9dbaf7fb83ab0b3d01332b0c273e57f0ed908ad9f0dedf249b
BLAKE2b-256 checksum
How to use checksums
9624a3f9ae45a8166fca536aab14c2044234bb55b8591763b9b081228874f765
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

Release files / v_podman_compose-1.0.4b1-py2.py3-none-any.whl

Download URL v_podman_compose-1.0.4b1-py2.py3-none-any.whl
Size 32.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
40c6a5f516f3e418d02f75d6236af8140c515fdbf64cf9158a6c82260bdf05c2
BLAKE2b-256 checksum
How to use checksums
35019b62f379c960861486def32d0e4a207b17fb7471f90be3bfb1192b6c903c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.8.0 pkginfo/1.8.2 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.9 tqdm/4.63.0 importlib-metadata/4.11.3 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.10.2

Release history Release notifications | RSS feed

This release

1.0.4b1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page