Sign inSign up

kgrv/python

By kgrv

Updated about 1 month ago

A minimal Python image with init, user, and mimalloc.

Image
Languages & frameworks
0

10K+

kgrv/python repository overview

DESCRIPTION

A minimal python image with init, user, and mimalloc.

SUPPORTED TAGS

Tip

RECOMMEND development on kgrv/python instead of the official python:alpine to mitigate musl performance issue.

3.14.7, 3.14, 3, latest

3.13.15, 3.13

3.12.14, 3.12

3.11.16, 3.11

3.10.21, 3.10

LAYERS

TagsAMD64ARM64Description
bin9.53 MB9.81 MBThe smallest footprint without built-in packages
min37.70 MB40.40 MBLayer on bin with built-in packages
3.x.y47.40 MB50.70 MBBase on kgrv/alpine as drop-in replacement for python:alpine

3.14.3 - 2026-02-09

SUPPORTED ARCHITECTURES

OS/ARCHDescription
linux/amd6464-bit x86 architecture for Linux operating systems
linux/arm6464-bit ARM architecture for Linux operating systems

PARAMETERS

TypeContainerAvailabilityFunction
Volume/mnt>= binOptional Bind mount volume
EnvironmentEUID>= 3.xOptional Effective User ID
EnvironmentEGID>= 3.xOptional Effective Group ID
EnvironmentUMASK>= 3.xOptional Default permissions
EnvironmentSUGGEST>= 3.xOptional Set suggestion messages
EnvironmentTZ>= 3.xOptional Set time zone

OVERVIEW

User / Group ID

  • EUID / EGID environment variables
  • mini:mini as default

Mask

  • UMASK defaults to 0022

Suggestion

  • SUGGEST defaults to true

USAGE

Dockerfile

FROM kgrv/python:min
Init
  • Utilize tini by using CMD without overriding ENTRYPOINT
FROM kgrv/python:min AS staging
...
CMD [ "python", "--version" ]
  • Override ENTRYPOINT with "tini", "--"
FROM kgrv/python:min AS staging
...
ENTRYPOINT [ "tini", "--", "python" ]
CMD [ "--version" ]
Principle of Least Privilege
  • Applicable to 3.x. Override ENTRYPOINT with "tini", "--", "enpt".
FROM kgrv/python:3.14 AS develop
...
ENTRYPOINT [ "tini", "--", "enpt", "python" ]
  • Applicable to bin, min. Add USER before ENTRYPOINT.
FROM kgrv/python:min AS staging
...
USER mini
ENTRYPOINT [ "tini", "--", "python" ]
Install Python Packages
  • pipy script is packaged to simplify install process.
    A script to facilitate installing Python packages.

    USAGE: pipy [OPTIONS] [PIP_INSTALL_ARGUMENTS]

    EXAMPLES:
        pipy --requirement requirements.txt
        pipy -n -m --requirement requirements.txt

    OPTIONS:
        -w, --workspace PATH        Path to workspace [/tmp/pipy]
        -n, --no-bytecode           Disable Python bytecode
        -m, --remove-pycache        Remove Python cache
        -d, --debug                 Enable debug mode
        --version                   Display version
        --help                      Display usage information

    ENVIRONMENT:
        Set environment variables to corresponding options

        PIPY_WORKSPACE          [-w]  Path to workspace
        PYTHONDONTWRITEBYTECODE [-n]  Disable Python bytecode
        REMOVE_PYCACHE          [-m]  Remove Python cache

    Check out 'README.md' at https://hub.docker.com/r/kgrv/python
Example
  • Use 3.x to develop and build dependencies
  • Use min or bin as base image for distribution
FROM kgrv/python:3.14 AS deps
COPY requirements.txt .
RUN pipy --no-bytecode --remove-pycache --requirement requirements.txt --debug

FROM kgrv/python:3.14-min AS release
COPY --link src/ .
COPY --link --from=deps --chmod=555 --chown=root:root /tmp/pipy/bin/ /usr/local/bin/
COPY --link --from=deps --chmod=1777 --chown=root:root /usr/local/lib/python/site-packages /usr/local/lib/python/site-packages
USER mini
ENTRYPOINT [ "tini", "--", "python", "run.py" ]
CMD [ "--debug" ]

Time Zone

  • Utilize 3.x layer for included /usr/share/zoneinfo
FROM kgrv/python:3.14 AS develop
  • Mount system /etc/localtime or /usr/share/zoneinfo
docker run -it -v /etc/localtime:/etc/localtime:ro kgrv/python:3.14
docker run -it -v /usr/share/zoneinfo/US/Eastern:/etc/localtime:ro kgrv/python:3.14

Docker CLI

docker run -it kgrv/python:min
Start container with bind mount
docker run -it -v $(pwd):/mnt kgrv/python:min
Start container with UID / GID

Important

Argument --user is not supported, please use EUID/EGID.

Note

Only applicable to 3.x.

docker run -it -e EUID=$(id -u) -e EGID=$(id -g) kgrv/python:3.14
Start container as ROOT

Note

Only applicable to 3.x.

docker run -it kgrv/python:3.14 --BECOME_ROOT

Tag summary

Content type

Image

Digest

sha256:e0fb66f53

Size

17.3 MB

Last updated

about 1 month ago

docker pull kgrv/python