First, I would like to thank the community members who have been maintaining 
the Python docker images, it's one of those thankless opensource infrastructure 
volunteer roles that they've been doing for a long time. Unfortunately Docker 
assigns the title "Official Image" for various community run images, which 
creates a misconception on the guarantees being provided, and if I were a 
suspicious person I would say Docker creates this misconception on purpose to 
both get free work from community members and make Docker seem more supported 
by third party organizations than it actually is.

On the topic of python-build-standalone, I've been using it in production for 
several months now and I'm fairly happy with it.

However, one minor reproducibility issue I have when installing 
python-build-standalone via uv, is that uv does not have an ability to pin to a 
specific build between uv versions, as uv hard codes a mapping of Python 
version and platform to a specific build and then updates that mapping between 
releases. So, updating the version of uv between runs, or having two users run 
different versions of uv to initialize the environment can change the results.

While normally such build changes are trivial, if you look at the uv 0.7.8 and 
0.7.9 changelogs you will see that sometimes they can have significant impact: 
https://github.com/astral-sh/uv/releases/tag/0.7.8. Also, this email finally 
prompted make an issue on this topic: 
https://github.com/astral-sh/uv/issues/14263.

There are other ways to source python-build-standalone, such as pbs-installer 
or writing your own script, but I've not yet spent any time investigating them, 
so I can't comment on them.

Damian

-----Original Message-----
From: Jarek Potiuk <ja...@potiuk.com>
Sent: Wednesday, June 25, 2025 10:44 AM
To: dev@airflow.apache.org
Subject: [DISCUSS] Switching base Python container images to python-standalone ?

Hello here,

Together with Aritra we are looking into adding a few more things to our images 
(golang tool chain for CI image), also Shahar is experimenting with Rust tool 
chain and I also recently realized (by some of the issues we had) that 'Docker 
Official Python Image' that is part of 'Official Program' [1] is not as 
'Official' as I thought so we discuss about changing the base of our images 
(first CI and then when we see it works fine - PROD)

Currently we are using the 'Official' image - but after some issues and 
discussions with people at PyCon and FOSS Backstage (I had a chance to talk to 
Python maintainers and even had a few beers with them) - it turned out that the 
official Python Image' is maintained by 'a community's which really is a few 
pretty random people - and that explains for example why we have sometimes 
unpacked security vulnerabilities in setuptools etc. - because they made some 
compatibility choices and decisions that do not allow them to upgrade easily, 
also they had some delays in releasing updated Python versions. And Docker does 
not **really** do much vetting there.

So I think it would be good to switch how we build the base for our images.
And following the experience of `uv python` [2] - it seems that maybe using 
"python-standalone" [3] project is a good alternative. It's managed by Astral 
now (so yes - another dependency on them), but what you have with it you have 
practically 100% complete Python interpreter installed in seconds.
We could continue using debian-slim as a "base, base image" - and install 
python using "python-standalone". There are a few incompatibilities [4] of the 
distributions of Python, but there are very few and mostly related to some 
obscure systems (compatibilities with terminal in REPL, and gtk / UI 
integration that is anyhow not really working in "standard" Python 
distributions).

I would love to hear what you think - happy to get any feedback/ insights, 
suggestions and answer additional questions, provide some links to past 
"troubles" we had with Python "Official" images etc.

J.


[1] Official Python Images - https://hub.docker.com/_/python [2] UV Python 
installation - https://docs.astral.sh/uv/guides/install-python/
[3] Python Standalone project -
https://github.com/astral-sh/python-build-standalone
[4] Python Standalone incompatibilities - 
https://gregoryszorc.com/docs/python-build-standalone/main/quirks.html
________________________________
 Strike Technologies, LLC (“Strike”) is part of the GTS family of companies. 
Strike is a technology solutions provider, and is not a broker or dealer and 
does not transact any securities related business directly whatsoever. This 
communication is the property of Strike and its affiliates, and does not 
constitute an offer to sell or the solicitation of an offer to buy any security 
in any jurisdiction. It is intended only for the person to whom it is addressed 
and may contain information that is privileged, confidential, or otherwise 
protected from disclosure. Distribution or copying of this communication, or 
the information contained herein, by anyone other than the intended recipient 
is prohibited. If you have received this communication in error, please 
immediately notify Strike at i...@striketechnologies.com, and delete and 
destroy any copies hereof.
________________________________

CONFIDENTIALITY / PRIVILEGE NOTICE: This transmission and any attachments are 
intended solely for the addressee. This transmission is covered by the 
Electronic Communications Privacy Act, 18 U.S.C ''2510-2521. The information 
contained in this transmission is confidential in nature and protected from 
further use or disclosure under U.S. Pub. L. 106-102, 113 U.S. Stat. 1338 
(1999), and may be subject to attorney-client or other legal privilege. Your 
use or disclosure of this information for any purpose other than that intended 
by its transmittal is strictly prohibited, and may subject you to fines and/or 
penalties under federal and state law. If you are not the intended recipient of 
this transmission, please DESTROY ALL COPIES RECEIVED and confirm destruction 
to the sender via return transmittal.

Reply via email to