Метою цого PR є невелика опмимізація поточних Dockerfile шляхоч заміни імеджа з python:3.10.6 на python:3.10-slim.
Результат:
@yurnov ➜ /workspaces/ukraine_alarm_map/deploy/explosions (docker-optimization) $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 3.10-slim f2c4efdd42c6 11 seconds ago 144MB
test 3.10.6 5735932c23a3 42 seconds ago 936MB
@yurnov ➜ /workspaces/ukraine_alarm_map/deploy/explosions (docker-optimization) $
python:3.10-slim базується на Debian 12 "Bookworm", який є current stable release, у той час як python:3.10.6 на (Debian 11 “bullseye”)[https://www.debian.org/releases/bullseye/] (current oldstable release), і загалом, я не маю нічого проти bullseye, але також і не бачу сенсу триматись за bullseye для базового імеджа для Python. У будь-якому разі, якщо є аргементовані зауваження до зауваження bookworm, готовий змінити у PR імедж на 3.10-slim-bullseye.
Станом на зараз Python 3.10 у стані security (див (PEP-619)[https://peps.python.org/pep-0619/]), і з його використанням немає проблем, але версія 3.10.6 доволі стара, і раціонаьно оновитись до новішої (трохи думок нижче), в межах 3.10.x актуальною є 3.10.14, власне вона ж і є у поточному імежжі python:3.10-slim. Я спеціально залищив python:3.10-slim а не фіксував 3.10.14-slim для автоматичного оновлення до версій наступних оновлень безпеки, але розумію підхід фіксувати конкретні версії, і якщо він прийнятий у даному репозиторії, за запитом виправлю на 3.10.14-slim-bookworm.
Можливо раціонально розглянути оновлення Python до 3.12, там з приємного краще формалізоване використанні f-string (дивись (PEP-701)[https://peps.python.org/pep-0701/]), що робить їх використання простішим і більш інтуїтивним, проте я не став пропонувати такий перехід версій, оскільки я не перевірив сумісіність усіх бібліотек та коду з 3.12
У будь-якому випадку, найвідчутнішою зміною є прехід на slim імедж, результат якого можна бачити у прикладі на початку опису цього PR-у.
Додатково, я трохи реформатував python код за допомогою (black)[https://github.com/psf/black], таке форматування робить код трохи приємнішим для читання. Зміни були зроблені в автоматичному режимі за допомогою black --line-length 120 --target-version py310 deploy з використанням black==24.3.0. Ця зміна зроблена окремим комітом, на випадок якщо автори репозиторію з такі зміни пофрмутвання не підтртмують, зміни легко ревертнути.
Метою цого PR є невелика опмимізація поточних Dockerfile шляхоч заміни імеджа з
python:3.10.6
наpython:3.10-slim
.Результат:
python:3.10-slim
базується на Debian 12 "Bookworm", який є current stable release, у той час якpython:3.10.6
на (Debian 11 “bullseye”)[https://www.debian.org/releases/bullseye/] (current oldstable release), і загалом, я не маю нічого проти bullseye, але також і не бачу сенсу триматись за bullseye для базового імеджа для Python. У будь-якому разі, якщо є аргементовані зауваження до зауваження bookworm, готовий змінити у PR імедж на3.10-slim-bullseye
.Станом на зараз Python 3.10 у стані security (див (PEP-619)[https://peps.python.org/pep-0619/]), і з його використанням немає проблем, але версія 3.10.6 доволі стара, і раціонаьно оновитись до новішої (трохи думок нижче), в межах 3.10.x актуальною є 3.10.14, власне вона ж і є у поточному імежжі
python:3.10-slim
. Я спеціально залищивpython:3.10-slim
а не фіксував3.10.14-slim
для автоматичного оновлення до версій наступних оновлень безпеки, але розумію підхід фіксувати конкретні версії, і якщо він прийнятий у даному репозиторії, за запитом виправлю на3.10.14-slim-bookworm
.Можливо раціонально розглянути оновлення Python до 3.12, там з приємного краще формалізоване використанні f-string (дивись (PEP-701)[https://peps.python.org/pep-0701/]), що робить їх використання простішим і більш інтуїтивним, проте я не став пропонувати такий перехід версій, оскільки я не перевірив сумісіність усіх бібліотек та коду з 3.12
У будь-якому випадку, найвідчутнішою зміною є прехід на
slim
імедж, результат якого можна бачити у прикладі на початку опису цього PR-у.Додатково, я трохи реформатував python код за допомогою (black)[https://github.com/psf/black], таке форматування робить код трохи приємнішим для читання. Зміни були зроблені в автоматичному режимі за допомогою
black --line-length 120 --target-version py310 deploy
з використаннямblack==24.3.0
. Ця зміна зроблена окремим комітом, на випадок якщо автори репозиторію з такі зміни пофрмутвання не підтртмують, зміни легко ревертнути.