docker-image-size-limit
Limit your docker image size with a simple CLI command.
Perfect to be used inside your CI process.
Read the announcing post.
Installation
pip install docker-image-size-limit
Or use our Github Action or pre-built docker image.
Usage
We support just a single command:
$ disl your-image-name:label 300MiB
your-image-name:label exceeds 300MiB limit by 114.4 MiB
Add --max-layers flag to also lint the maximum amount of layers possible
in your image:
# If your image has 7 layers:
$ disl your-image-name:label 300MiB --max-layers=5
your-image-name:label exceeds 5 maximum layers by 2
# If your image has 5 layers:
$ disl your-image-name:label 300MiB --max-layers=5
# ok!
Add --current-size flag to show the current size your image:
$ disl your-image-name:label 300MiB --current-size
your-image-name:label size is 414.4 MiB
your-image-name:label exceeds 300MiB limit by 114.4 MiB
Add --exit-zero flag to force the exit code to be 0 even if there are errors:
$ disl your-image-name:label 300MiB --exit-zero
your-image-name:label exceeds 300MiB limit by 114.4 MiB
$ echo $?
0
You can combine all flags together:
$ disl your-image-name:label 300MiB --max-layers=5 --current-size --exit-zero
your-image-name:label size is 414.4 MiB
your-image-name:label exceeds 300MiB limit by 114.4 MiB
your-image-name:label exceeds 5 maximum layers by 2
Run disl as a module:
$ python -m docker_image_size_limit your-image-name:label 300MiB
your-image-name:label exceeds 300MiB limit by 114.4 MiB
Options
You can specify your image as:
- Image name:
python - Image name with tag:
python:3.6.6-alpine
You can specify your size as:
- Raw number of bytes:
1024 - Human-readable megabytes:
30 MBor30 MiB - Human-readable gigabytes:
1 GBor1 GiB - Any other size supported by
humanfriendly
Programmatic usage
You can also import and use this library as python code:
from docker import from_env
from docker_image_size_limit import check_image_size
oversize = check_image_size(from_env(), 'image-name:latest', '1 GiB')
assert oversize < 0, 'Too big image!' # negative oversize - is a good thing!
We also ship PEP-561 compatible type annotations with this library.
GitHub Action
You can also use this check as a GitHub Action:
- uses: wemake-services/docker-image-size-limit@master
with:
image: "$YOUR_IMAGE_NAME"
size: "$YOUR_SIZE_LIMIT"
# optional fields:
max_layers: 5
show_current_size: false
exit_zero: false
Here's an example.
Docker Image
We have a pre-built image available.
First, pull our pre-built docker image:
docker pull wemakeservices/docker-image-size-limit
Then you can use it like so:
docker run -v /var/run/docker.sock:/var/run/docker.sock --rm \
-e INPUT_IMAGE="$YOUR_IMAGE_NAME" \
-e INPUT_SIZE="$YOUR_SIZE_LIMIT" \
-e INPUT_MAX_LAYERS="$YOUR_MAX_LAYERS" \
-e INPUT_SHOW_CURRENT_SIZE="true" \
-e INPUT_EXIT_ZERO="true" \
wemakeservices/docker-image-size-limit
Should I use it?
You can use this script instead:
LIMIT=1024 # adjust at your will
IMAGE='your-image-name:latest'
SIZE="$(docker image inspect "$IMAGE" --format='{{.Size}}')"
test "$SIZE" -gt "$LIMIT" && echo 'Limit exceeded'; exit 1 || echo 'Ok!'
But I prefer to reuse tools over
custom bash scripts here and there.
License
MIT.
Release files for docker-image-size-limit 2.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| docker_image_size_limit-2.2.0.tar.gz | 6.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| docker_image_size_limit-2.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.7 kB
Release files / docker_image_size_limit-2.2.0.tar.gz
| Download URL | docker_image_size_limit-2.2.0.tar.gz |
|---|---|
| Size | 6.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f583a03b1c561b4424b02f92c68a4035bbe50b8c5f0e59ae2c559db1cf854edd
|
|
BLAKE2b-256 checksum How to use checksums |
a74d1f10277d3cb97d446955ea864fc93167df468ea7f7879044baf9f689b5f7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.4 CPython/3.11.9 Darwin/23.5.0
|
Release files / docker_image_size_limit-2.2.0-py3-none-any.whl
| Download URL | docker_image_size_limit-2.2.0-py3-none-any.whl |
|---|---|
| Size | 6.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ba7929035f4f781667263645c34f4b7965e2900a084335dacca151ca83dc9fe8
|
|
BLAKE2b-256 checksum How to use checksums |
d5f71e6f1e2bf7ee2358a0bd1f302ce6c68626ae743ba4b9e3bb513872c90330
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/2.1.4 CPython/3.11.9 Darwin/23.5.0
|