Import a Docker Compose application into ostree
Project description
precompose
precompose
is a tool to import a Compose application into an OSTree repository.
Distributing container images through an OSTree repository has some advantages, compared to the use of a container registry:
- Images are deduplicated at the file level with OSTree, instead of at the layer level.
- If your host is also managed by OSTree and is based on the same OS as your containers, then images are also deduplicated at the file level against the host.
- Updates are done at the file level, instead of at the layer level - this can save significant amounts of bandwidth when only one or a few files in a layer have changed.
precompose
produces an OSTree commit which contains:
- Your original
docker-compose.yml
, rewritten to pin each image to a specific SHA - A directory containing exploded copies of all the containers your application needs, which can be used as an additional image store with Podman
Requirements
In addition to the Python modules that it requires, precompose
also needs some external tools to do its work:
Docker Compose
While docker-compose
can be installed from PyPI, precompose
only uses it as an external tool, since it does not have a stable API. Because it is not used as a library, and because you may have obtained docker-compose
from a place other than PyPI, it is not declared as a Python dependency of this module. It is used to preprocess the Compose file and interpolate any environment variables that may be present in the image name.
docker-compose
is also needed to run an application packaged with precompose
.
OSTree
precompose
shells out to the ostree
command-line tool in order to create its commits.
Podman
precompose
shells out to podman unshare
to simulate being root and to podman pull --root
to pull container images.
Your system must be configured in a way that podman
can operate without root privileges (aka "rootless containers") - on most Debian and Ubuntu based systems, installing the uidmap
package along with Podman should be enough. Your mileage may vary.
podman
is also needed to run an application packaged with precompose
, since Docker does not have anything equivalent to an additional image store. It is strongly recommended to use version 3.0 or later of Podman; the APIs used by docker-compose
are incomplete in earlier versions.
Installation
Install using pip:
pip3 install precompose
...or, grab the latest release from GitHub or PyPI and install it manually.
Usage
precompose [-h] [--repo OSTREE] [--sign-by KEYID] [--arch ARCH] [--variant VARIANT] BRANCH COMPOSE
Import a Docker Compose application into ostree
positional arguments:
BRANCH ostree branch to commit to
COMPOSE path to docker-compose.yml
optional arguments:
-h, --help show this help message and exit
--repo OSTREE ostree repo to import to
--sign-by KEYID sign commit with GPG key
--arch ARCH architecture to import
--variant VARIANT variant to import
Utilities
precompose_utils
(on GitHub and PyPI) contains a set of utilties for working with applications that have been packaged with precompose
.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file precompose-0.4.0.tar.gz
.
File metadata
- Download URL: precompose-0.4.0.tar.gz
- Upload date:
- Size: 20.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 846ddab9aeb02c064c9c7c12cdb484a76d0b0c12f7defdef683bed27a55045fd |
|
MD5 | 0bb664d9a3878c75b744a2fd5384c9d6 |
|
BLAKE2b-256 | f9af994a3b3f72df53833bacd37244638dc3bf2ebf1cb10bbcac186794b600af |
File details
Details for the file precompose-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: precompose-0.4.0-py3-none-any.whl
- Upload date:
- Size: 18.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/4.6.3 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.0 CPython/3.9.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a14e16add3894ab36b4643ba0e092dbdf329e87c4d43e4de82ba6339fbe3ef67 |
|
MD5 | ed080c2f0140cffa2fc61e39c1d8a780 |
|
BLAKE2b-256 | 06db1fff7735c679ef9848b0abad622e79048fba2579eded9d6d7ba9264f86f1 |