Рубрики
Uncategorized

Один не «просто контейнерит» приложение

Одно не «просто контейнеризировать» приложение: это процесс, который включает в себя много изучения для каждого языка и базового изображения. Помечено с Docker, DevOps, контейнерами, инфраструктурой.

Дочсерская экосистема заполнена протекающими абстракциями. Утопическое видение контейнеров Docker — это мир, в котором разработчик может захватить базовый контейнер для языка, копировать в своем коде с минимальным докеренным файлом и быть готовым к разработке и развертыванию мгновенно.

К сожалению, этот ландшафт наполнен по отношению к числу Gotchas, которые делают этот мир далеко от реальности. Вот некоторые из воинских вещей, в которых я столкнулся при работе с контейнерами:

  • При работе с Python ты Действительно не может использовать альпийские изображения. Питоны Пакетные двоины не правильно компилируют на альпий из коробки. Для легкого контейнера вам нужно использовать тонкий контейнер Debian. Это означает, что вы должны знать, что «Buster» и «Stretch» — это версии Debian (потому что Debian не находится в имени метки), и вы должны знать, какая версия более свежая.
  • При разработке использования официального Python Изображения, вы не можете получить хорошее автозаполнение в вашем редакторе без дополнительных шагов, потому что пакеты не в установленном объеме. Вы можете использовать дистанционное расширение VS CODE, чтобы фактически редактировать файлы в контейнере, или вы можете использовать Венв Чтобы помещать зависимости с кодом. Однако, используя Венв В рамках контейнера не даст вам правильного автозаполнения, потому что интерпретатор Python — внутри сам контейнер.
  • Официальный PHP Image не позволит вам установить пакеты PHP из REPOS Debian, потому что его исполняемый файл PHP скомпилируется из источника. Вы должны вместо этого использовать контейнер Docker-php-ext-install команда.
  • Официальный PHP Image не поставляется с менеджером пакета композитора PHP, но Python, Node и Ruby Images все поставляются с их соответствующим управляющим языком пакета из коробки. Вы должны найти способ программно установить композитор.
  • Официальный Узел Изображение приходит предварительно обработанный с помощью Divileged пользователем по умолчанию. Это невероятная особенность, которую я желаю, чтобы все изображения имели, однако, это специфическая особенность изображений, которую вы должны иметь в виду, когда наращиваете производство DockerFile.
  • Вы не можете запустить безвискися пользователя с официальным Nginx изображение. NGINX имеет отдельное изображение NGINX, которое использует безвисильный пользователь, однако он не отмечен официальным тегом.
  • Официальный MySQL Image (и бесчисленные другие другие) У вас нет версии для процессоров ARM, что означает, что они не могут работать на общих недорогих устройствах, таких как Raspberry Pi.

Несколько месяцев назад у меня была цель «обучения докера», но я обнаружил, что я вместо этого провел большую часть своего времени, изучая индивидуальные базовые изображения и их причуды. Это не совсем удивительно, поскольку каждый язык требует много удельных знаний домена: потребовалось две недели, чтобы выяснить, как развернуть мои первые рейсы приложения Rails на VM Ubuntu. Инфраструктура Docker-As-Code Paradigm также предлагает огромные преимущества в соответствии с настройкой каждой среды разработки и развертывания вручную, что я сделал до принятия контейнера.

Тем не менее, стоит признать сложности и болевые точки работы с документами докера. Одно не «просто контейнеризировать» приложение: это процесс, который включает в себя много изучения для каждого языка и базового изображения.

Оригинал: «https://dev.to/tylerlwsmith/one-does-not-just-containerize-an-app-5eae»