Skip to main content

No project description provided

Project description

docker-image-size-limit

wemake.services Build status codecov Python Version wemake-python-styleguide

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 MB or 30 MiB
  • Human-readable gigabytes: 1 GB or 1 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.

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

docker_image_size_limit-2.1.0.tar.gz (5.2 kB view details)

Uploaded Source

Built Distribution

docker_image_size_limit-2.1.0-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file docker_image_size_limit-2.1.0.tar.gz.

File metadata

  • Download URL: docker_image_size_limit-2.1.0.tar.gz
  • Upload date:
  • Size: 5.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.0.0 CPython/3.11.9 Darwin/23.5.0

File hashes

Hashes for docker_image_size_limit-2.1.0.tar.gz
Algorithm Hash digest
SHA256 21687281d6053919aa79fd9bdbbefa41be9473a4e3b9d4000c5c11bba8bff08c
MD5 db3df9f2614fe195035ac65c6422637e
BLAKE2b-256 6d5bd10133ecdfb1c1135d52853fc58a521965d76c8e65b064a982babd6b1664

See more details on using hashes here.

File details

Details for the file docker_image_size_limit-2.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for docker_image_size_limit-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 02c6bfbd52032793e2f6951d30ba84c2a761fc6c42ca082198d6531c96737af0
MD5 9e339cdb903173b75d505f5e46c85a7d
BLAKE2b-256 b3155a29ede18bb82423b4bb1b90ad955b7d58cf46b729c29895218c75e93ee9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page