a script to run docker-compose.yml using podman
Go to file
2021-12-21 22:44:34 +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 switch example to awx3 2019-06-17 15:58:41 +03:00
scripts update readme and no arguments print help 2019-09-03 00:19:07 +03:00
tests Fixes #199: seccomp:unconfined 2021-12-11 02:02:09 +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 #377: down -v 2021-12-21 22:44:34 +02:00
README.md resolve 2021-12-11 02:01:19 +02:00
requirements.txt resolve 2021-12-11 02:01:19 +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 resolve 2021-12-11 02:01:19 +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 docker-compose with Podman backend. The main objective of this project is to be able to run docker-compose.yml unmodified and rootless. This project is aimed to provide drop-in replacement for docker-compose, and it's very useful for certain cases because:

  • can run rootless
  • no daemon, no setup.
  • can be used by developers to run single-machine containerized stacks using single familiar YAML file

This project only depend on:

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

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.x) 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

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.

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

How it works

The default mapping 1podfw creates a single pod and attach all containers to its network namespace so that all containers talk via localhost. For more information see docs/Mappings.md.

If you are running as root, you might use identity mapping.