2019-09-02 23:19:07 +02:00
|
|
|
# Podman Compose
|
2019-03-04 10:30:14 +01:00
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
An implementation of `docker-compose` with [podman](https://podman.io/) 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
|
|
|
|
- only depend on `podman` and Python3 and [PyYAML](https://pyyaml.org/)
|
|
|
|
- no daemon, no setup.
|
|
|
|
- can be used by developers to run single-machine containerized stacks using single familiar YAML file
|
|
|
|
|
|
|
|
For production-like single-machine containerized environment consider
|
|
|
|
|
|
|
|
- [k3s](https://k3s.io) | [k3s github](https://github.com/rancher/k3s)
|
|
|
|
- [MiniKube](https://minikube.sigs.k8s.io/)
|
|
|
|
- [MiniShift](https://www.okd.io/minishift/)
|
|
|
|
|
|
|
|
|
|
|
|
For the real thing (multi-node clusters) check any production
|
|
|
|
OpenShift/Kubernetes distribution like [OKD](https://www.okd.io/minishift/).
|
|
|
|
|
|
|
|
## NOTE
|
|
|
|
|
|
|
|
This project is still underdevelopment.
|
2019-03-04 10:30:14 +01:00
|
|
|
|
2019-08-21 22:45:53 +02:00
|
|
|
## Installation
|
|
|
|
|
|
|
|
Install latest stable version from PyPI:
|
|
|
|
|
|
|
|
```
|
2019-09-02 23:19:07 +02:00
|
|
|
pip3 install podman-compose
|
2019-08-21 22:45:53 +02:00
|
|
|
```
|
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
pass `--user` to install inside regular user home without being root.
|
2019-08-21 22:45:53 +02:00
|
|
|
|
|
|
|
Or latest development version from GitHub:
|
|
|
|
|
|
|
|
```
|
2019-09-02 23:19:07 +02:00
|
|
|
pip3 install https://github.com/containers/podman-compose/archive/devel.tar.gz
|
2019-08-21 22:45:53 +02:00
|
|
|
```
|
2019-03-04 10:30:14 +01:00
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
or
|
2019-03-04 10:30:14 +01:00
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
```
|
2019-09-02 23:23:08 +02:00
|
|
|
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
|
2019-09-02 23:19:07 +02:00
|
|
|
```
|
2019-03-04 10:30:14 +01:00
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
or
|
2019-03-04 10:30:14 +01:00
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
```
|
2019-09-02 23:23:08 +02:00
|
|
|
curl -o ~/.local/bin/podman-compose https://raw.githubusercontent.com/containers/podman-compose/devel/podman_compose.py
|
|
|
|
chmod +x ~/.local/bin/podman-compose
|
2019-09-02 23:19:07 +02:00
|
|
|
```
|
2019-03-11 10:51:28 +01:00
|
|
|
|
2019-11-21 19:13:52 +01:00
|
|
|
or install from Fedora (starting from f31) repositories:
|
|
|
|
|
|
|
|
```
|
|
|
|
sudo dnf install podman-compose
|
|
|
|
```
|
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
## Basic Usage
|
2019-03-05 21:43:32 +01:00
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
We have included fully functional sample stacks inside `examples/` directory.
|
2019-03-11 10:51:28 +01:00
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
A quick example would be
|
2019-03-11 10:51:28 +01:00
|
|
|
|
|
|
|
```
|
2019-09-02 23:19:07 +02:00
|
|
|
cd examples/busybox
|
|
|
|
podman-compose --help
|
|
|
|
podman-compose up --help
|
|
|
|
podman-compose up
|
2019-03-11 10:51:28 +01:00
|
|
|
```
|
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
A more rich example can be found in [examples/awx3](examples/awx3)
|
|
|
|
which have
|
2019-03-11 10:51:28 +01:00
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
- A Postgres Database
|
|
|
|
- RabbitMQ server
|
|
|
|
- MemCached server
|
|
|
|
- a django web server
|
|
|
|
- a django tasks
|
2019-03-11 10:51:28 +01:00
|
|
|
|
2019-03-05 21:43:32 +01:00
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
When testing the `AWX3` example, if you got errors just wait for db migrations to end.
|
2019-03-05 21:43:32 +01:00
|
|
|
|
|
|
|
|
2019-09-02 23:19:07 +02:00
|
|
|
## 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](docs/Mappings.md).
|
|
|
|
|
|
|
|
If you are running as root, you might use identity mapping.
|
|
|
|
|