лучший способ установить локальный пакет в изображение докеров

У меня есть пакет python, который я написал, и я хочу использовать его в нескольких сборках докеров.

Однако я не могу просто установить локальный пакет, расположенный за пределами папки Dockerfile. И я не хочу копировать пакет в несколько проектов.

Итак, как мне сохранить свою архитектуру DRY ?

3 голоса | спросил Roman 8 FebruaryEurope/MoscowbThu, 08 Feb 2018 09:47:25 +0300000000amThu, 08 Feb 2018 09:47:25 +030018 2018, 09:47:25

1 ответ


3

Я не уверен, почему люди отказались от вас, кроме того, что есть хорошо документированный и простой способ сделать это.

Изображения Docker являются многоуровневыми, и вы можете создавать все свои пакеты для всех изображений в одном новом изображении докеры нашего собственного создания, а затем расширяться от этого.

Например, когда вы пишете файл докеров, ваша первая строка будет

FROM someothercontainer

Что вы можете сделать, так это создать новый образ для использования в вашем «FROM» во всех будущих контейнерах, которые вы пишете, который будет иметь это встроенное. Тривиальный пример - создать контейнер, похожий на

FROM ubuntu
apt-get install python

И затем создайте это изображение как my-image-with-python-installed или что-то работает.

Затем в более позднем контейнере, где вы хотите установить свой собственный материал для каждого контейнера, вы пишете свой файл Docker как таковой:

FROM my-image-with-python-installed
ADD my-local-package
...

Документация на странице Docker немного низка, так как они хотят, чтобы вы создавали наименьшие базовые изображения, которые вы можете, но вы можете найти их здесь: https://docs.docker.com/develop/develop-images/baseimages/

Ваша документация для команды FROM приведена здесь https: //docs.docker .com /engine /reference /builder /# from , но сначала вам нужно создать базовое изображение, но есть множество статей о том, как это сделать.

Edit:

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

ответил Mitch Kent 8 FebruaryEurope/MoscowbThu, 08 Feb 2018 12:26:11 +0300000000pmThu, 08 Feb 2018 12:26:11 +030018 2018, 12:26:11

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132