Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Alpine чи Debian slim: який базовий образ обрати для PHP-застосунку?

Офіційні PHP-образи мають варіанти на Alpine Linux (php:8.5-fpm-alpine) і на Debian (php:8.5-fpm на повному Debian, а для інших технологій часто ще й -slim).

Alpine:

  • маленький розмір - базова система кілька мегабайтів, образ PHP - десятки мегабайтів замість сотень;
  • менше пакетів - менше потенційних вразливостей у сканері;
  • але інша стандартна бібліотека C - musl замість glibc.

Наслідки musl, через які обирають Debian:

  • бінарні пакети під glibc не працюють: готові збірки деяких розширень, інструментів (наприклад, частина бінарників для Node.js-модулів, браузери для генерації PDF) - доводиться збирати з вихідного коду, і збирання стає довшим;
  • відмінності в поведінці: робота з DNS (наприклад, обробка search у resolv.conf), локалі, деякі функції форматування - інколи дають несподівані помилки, які важко відтворити;
  • продуктивність: у частині навантажень (виділення пам'яті, багатопотоковість) musl помітно повільніший за glibc;
  • налагодження: менше звичних інструментів, інша пакетна система (apk замість apt).

Debian (slim):

  • стандартний glibc - сумісність з більшістю бінарних пакетів і розширень;
  • більший розмір (але з multi-stage збиранням і чисткою - прийнятний);
  • передбачувана поведінка, звична для більшості серверних систем.

Як обрати:

  • Alpine - коли важливий розмір і застосунок не залежить від нативних бінарників під glibc; добре перевірена конфігурація;
  • Debian - коли потрібні нестандартні розширення, бінарні інструменти (wkhtmltopdf, Chromium, драйвери баз даних), коли команда стикалася з «дивними» помилками на musl;
  • distroless / мінімальні образи - для скомпільованих застосунків (Go); для PHP менш практичні.

Незалежно від вибору:

  • фіксувати версію: не php:8.5-fpm-alpine, а конкретну мінорну версію чи дайджест - інакше нове збирання тихо підтягне іншу версію PHP або системних бібліотек;
  • оновлювати свідомо й регулярно - заради виправлень безпеки;
  • не порівнювати лише розмір: різниця у 100 МБ рідко важлива, а година налагодження проблеми musl - помітна.

Докладніше в документації: Найкращі практики: вибір базового образу

Схожі питання