J-A-A-M / ukraine_alarm_map

прошивка для мапи тривог на основі ESP32
https://flasher.alerts.net.ua/
GNU General Public License v3.0
38 stars 5 forks source link

Оптимізація Dockerfile та реформутування Python коду для легшого сприйняття #186

Closed yurnov closed 6 months ago

yurnov commented 6 months ago

Метою цого 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. Ця зміна зроблена окремим комітом, на випадок якщо автори репозиторію з такі зміни пофрмутвання не підтртмують, зміни легко ревертнути.

yurnov commented 6 months ago

PR у неправилтний бранч