Python wrapper for run kaniko from shell with parameters from docker-compose.yml file.
- You have Docker project thar contains:
1.1
docker-compose.yml- as build manifest 1.2 One or moreDockerfiles in project - You want to automate builds with
kanikobuild system. kanikodont supportdocker-compose.ymlbuilds.
Requerments Minimal
Pythonversion is3.9.
pip install kaniko-wrapper
cd <...>/directory/contains/docker/and/docker-compose-file/
kaniko-wrapper
Note on the executor image. Google archived the original
kanikoin 2025 andgcr.io/kaniko-project/executoris frozen atv1.24.0. The default executor is now the community forkghcr.io/osscontainertools/kaniko:latest. Pin a tag in CI and override with--kaniko-image/KANIKO_IMAGEif needed.
--compose-file- Path to docker-compose.yml file--kaniko-image- Kaniko executor image (def.ghcr.io/osscontainertools/kaniko:latest)--push,--deploy,-d,-p- Build and push to the registry and allx-mirrors--dry-run,--dry- Dry run: build images without pushing--no-push- Build without pushing to the registry--verbose,-V- Verbose output (shortcut for--log-level DEBUG)--log-level- Override log level:DEBUG,INFO,WARNING,ERROR,CRITICAL--engine- Container engine:docker(default) orpodman--network NET- Executor run network (e.g. host); default host for podman--squash / --no-squash- Single-layer output, default on (x-squash overrides per service)--version,-v- Show script version--help,-h- Show this help message and exit
- Single project in
docker-compose.yml
services:
app:
image: "EpicMorg/kaniko-wrapper:image"
build:
context: .
dockerfile: ./Dockerfile
- Multiproject in
docker-compose.yml
services:
app:
image: "EpicMorg/kaniko-wrapper:image-jdk11"
build:
context: .
app-develop:
image: "EpicMorg/kaniko-wrapper:image-develop-jdk11"
build:
context: .
dockerfile: ./Dockerfile.develop
x-squash: false
app-develop-17:
image: "epicmorg/astralinux:image-develop-jdk17"
build:
context: .
dockerfile: ./Dockerfile.develop-17
x-squash: true
- Mirrors — push one build to several registries
Add an x-mirrors list to a service. On --push, the built image is pushed to
the primary image and to every mirror in a single build (multiple
--destination). A failed push to any mirror fails the build. All target
registries must be authenticated in ~/.docker/config.json.
services:
app:
image: docker.io/epicmorg/app:latest
build:
context: .
x-mirrors:
- quay.io/epicmorg/app:latest
- my.owned.hub/epicmorg/app:latest
- Squash (
docker-compose.yml): Add anx-squashfield to a compose service to control single-layer output. Default is true (squash on).
services:
app:
image: docker.io/epicmorg/app:latest
x-squash: false