Optimize Airflow images for cross-version caching #21217
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Airflow produces images for multiple versions. Sometimes we
release several images for different versions close to one another
when base Python image is the same. In those cases it would be
great if images for different Airflow versions shared as much
as possible of image layers - the "base" dependencies usually
do not change between versions so two images with the same Python
version could only start differring at the moment we start to
install Airflow for the first time.
This change moves AIRFLOW_VERSION ARG declaration and ENV variable
as late as possible, so that earlier layers in the Docker images are
the same for different Airflow image versions as long as the base
Python image is the same.
This should decrease significantly used space if someone switches
between two Airflow versions in the same system (for testing
or when doing migration). It also should speed up cache
refreshing and rebuilding and decrease overall size of the cache
used by multiple Airflow Images (especially when we are close
to release (like we are now with Airlfow 2.2.4)
^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code change, Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in UPDATING.md.