This applies if you have chown line like this
...
COPY . /app
RUN chown -R django:django /app
...
When building, this always created a layer of like 250mb, then another of 250mb more (for the chown diff). If that is changed to only this command
...
COPY --chown=django:django . /app
...
then this generates only one layer of around 2.5mb
So the improvement here was on each deploy uploading around 500mb -> 2.5mb, this is a 99.5% improvement.
The morale of the story is that if you change one file in your app, just a few characters, and when building that generates hundreds of mb being moved, then you need to debug why docker layers are being created, and you might be rewarded with ~99 percent of improvements in your docker flow.
Bonus: A good tool I’ve used to debug docker image layer sizes is dive. Take a look into it, you won’t regret it :)