Разработчик предложил создать новую версию Docker-образов для Composer, содержащую только бинарный файл Composer, что позволяет оптимизировать пространство и ресурсы. Идея была в том, чтобы избежать загрузки полного образа Composer (около 190 МБ), если требуется только сам бинарный файл (около 2,5 МБ). Его Pull Request был принят, и теперь пользователи могут использовать компактные, бинарные образы Composer в своих сборках Docker.
Особенности новой реализации:
Чтобы использовать бинарный образ, необходимо указать
composer/composer и добавить суффикс -bin. Также изменено расположение бинарного файла: теперь он находится в корневом каталоге (/composer) вместо стандартного (/usr/bin/composer).Пример использования:
FROM php:8-alpine
COPY --from=composer/composer:2-bin /composer /usr/bin/composer
Новый подход подходит для создания кастомных образов на базе PHP с Composer, где можно просто скопировать готовый бинарный файл, избегая программной установки.
Важно отметить, что эти образы содержат только бинарный файл Composer и не подходят для выполнения команд, так как в них нет ни PHP-окружения, ни оболочки.
Технические детали реализации:
Автор добавил новые цели сборки в Dockerfile, что позволило создавать как полноценные, так и бинарные образы. Для этого был применен метод многоэтапной сборки, оптимизирующий конечный образ и исключающий временные файлы. Также в GitHub Actions были настроены новые этапы для сборки и тестирования обоих типов образов.