Docker совет №3: Установка самых популярных пакетов в Alpine
Oct 5, 2017 17:29 · 266 words · 2 minute read
Мы уже знаем, что самый оптимальный выбор для базового docker-образа это Alpine — легковесный дистрибутив Linux.
Давайте разберемся, как установить несколько пакетов, которые чаще всего встречаются в веб-приложениях!
Если длительное время использовать Debian, Ubuntu, CentOS или [ваш_любимый_дистрибутив], то, скорее всего, вы уже знаете, какие пакеты нужны вашим приложениям и как их установить. Но когда возникает необходимость срочно освоить установку нужных пакетов в docker-образе на базе Alpine, то с этим могут возникнуть проблемы…
Даже менеджеры пакетов в разных дистрибутивах отличаются:
+-----------------+-------------------------+
| DISTRIBUTION | PACKAGE MANAGER COMMAND |
+-----------------+-------------------------+
| Alpine | apk |
| Arch | pacman |
| Debian / Ubuntu | apt (aptitude) |
| CentOS / RHEL | yum |
| Fedora | dnf |
+-----------------+-------------------------+
Для управления пакетами в Alpine нужно использовать apk
. Но разница не только в пакетных менеджерах, ведь сами названия пакетов тоже отличаются!
Для примера самые популярные пакеты, которые чаще всего устанавливаются для работы с веб-приложениями будут называться так:
+-------------------------------+-----------------+--------------------+
| PURPOSE | ALPINE | DEBIAN / UBUNTU |
+-------------------------------+-----------------+--------------------+
| Connecting to PostgreSQL | postgresql-dev | libpq-dev |
| Connecting to MySQL / MariaDB | mariadb-dev | libmysqlclient-dev |
| Interacting with Imagemagick | imagemagick-dev | imagemagick |
| Dealing with bcrypt | libffi-dev | libffi-dev |
+-------------------------------+-----------------+--------------------+
Конечно, этот список далеко не полный — если у вас есть какие-либо пакеты, которые должны попасть в список, дайте мне знать в комментариях. Названия некоторых пакетов можно нагуглить (например, libpq-dev
для Alpine), но бывают и разочарования — если вы столкнулись с ошибкой unsatisfiable constraints
, то нужного вам пакета не существует. В таком случае можно попробовать собрать его самостоятельно из исходников.