README.md

    Podman Compose

    Pylint Test: Unit tests  PyTest

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

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

    This project only depends 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 allows containers to 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 the 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 install from Fedora (starting from f31) repositories:

    sudo dnf install podman-compose

    Basic Usage

    We have included fully functional sample stacks inside examples/ directory. You can get more examples from awesome-compose.

    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 many cases as we can to make sure we are compatible

    Unit tests with pytest

    run a pytest with following command

    python -m pytest pytests

    Contributing guide

    If you are a user or a developer and want to contribute please check the CONTRIBUTING section

    项目简介

    a script to run docker-compose.yml using podman

    发行版本

    当前项目没有发行版本

    贡献者 118

    全部贡献者

    开发语言

    • Python 99.2 %
    • Shell 0.6 %
    • Dockerfile 0.2 %