Limit your docker image size with a simple CLI command.
Perfect to be used inside your CI process.
Read the announcing post.
pip install docker-image-size-limitOr use our Github Action or pre-built docker image.
We support just a single command:
$ disl your-image-name:label 300MiB
your-image-name:label exceeds 300MiB limit by 114.4 MiBAdd --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 MiBAdd --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 $?
0You 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 2Run 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 MiBYou 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 
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.
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: falseHere's an example.
We have a pre-built image available.
First, pull our pre-built docker image:
docker pull wemakeservices/docker-image-size-limitThen 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-limitYou 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.
MIT.