Docker, безусловно, является самым популярным программным обеспечением для контейнеризации приложений. Контейнеры позволяют легко упаковать, выпускать, развернуть и выполнять стек приложений последовательным и повторяющимся образом. Тем не менее, есть нечто большее, чем упаковка и оркестренка стека приложений. Docker также можно использовать для создания кода, выполнения сценариев и выполнения шагов в конвейере CI/CD. Вы также можете использовать Docker, чтобы попробовать инструменты без необходимости установить их на машине.
Выполнение шагов CI/CD в контейнерах
Есть много инструментов сборки, таких как Дженкинс, Битбакет и Гитлаб, которые поддерживают выполнение этапов трубопровода в рамках контейнера Docker. Это имеет следующие преимущества:
- Строите зависимости, такие как Node, Maven, Java и т. Д.
- Команды приложений могут диктовать и поддерживать свои зависимости сборки
- Разработчики могут создавать код точно так же, как сервер сборки
Обычно каждый шаг в трубопроводе может определить, какое изображение запустить как контейнер. Вот пример трубопровода Gitlab Yaml для шага сборки, который использует Maven:
image: maven:latest
stages:
- build
build:
stage: build
script:
- mvn package
Выполнение шагов сборки локально
Те же шаги сборки, которые запускаются во время трубопровода CI/CD, также могут выполняться локально. Это можно сделать с помощью Docker, запустив контейнер и отображение тома в расположении источника. Несколько примеров:
Docker run -rm -v $ (Pwd):/usr/src/app -W/usr/src/appDocker run -rm -v $ (Pwd):/usr/src/app -w/usr/src/app maven: 3.5.3 mvn clean installDocker run -rm -v $ (Pwd):/usr/src/app -w/usr/src/app gradle: 4.7 gradle clean build
Выполнение сценариев
Docker также можно использовать для выполнения других вещей, которые необходимы для выпуска, таких как сценарии или утилиты для миграции данных. Эти изменения могут быть упакованы как изображение Docker, которое версирует вместе с выпуском, для которого они необходимы. Это позволяет установить релиз быть повторяемым и тестируемым с помощью автоматизации. Упаковка и выполнение этих задач с помощью Docker обеспечивает возможность практически удалять необходимость в игровой книге установки, потому что эти шаги авторизуются в изображении Docker. Если сценарии упакованы в изображение под названием «Утилизаторы миграции», вы можете запустить их и даже передать их параметрам. Например, если вы хотите выполнить скрипт с именем «runfilemigration.sh prod» в вашем изображении «миграционные утилизации», вы бы выполнили следующее:
Docker run-rm -v local-dir:/path/to/files.sh Migration-utils Prod
Обратите внимание, как, когда вы переопределяете точку записи, аргумент «Prod» теперь отправляется в качестве аргумента в определенную точку записи. В этом примере вы указываете том, который представляет, где файлы, к которому необходим сценарий.
Экспериментируя с инструментами
Недавно я посещал вебинар, который прошел демонстрацию инструмента, который выполняет статический анализ камердетов. Инструмент казался довольно интересным, и они предоставили ссылку на местонахождение проекта на GitHub. В пределах чтения у него были различные инструкции по установке для установки инструмента. Были параметры для Windows, Linux, Mac (Home Brew) и изображения Docker. Я немедленно копировал/вставил инструкции для Docker Run командовать и изменить несколько вещей для моего конкретного местоположения файла. Затем я пошел на поиски аналогичных инструментов, чтобы сравнить и сопоставить вывод и посмотреть, понравилась ли мне функциональность одного над другим. В каждом случае, если они предоставляют изображение Docker, я просто запускаю это. Это обеспечивает два преимущества. Во -первых, мне не нужно устанавливать каждый из этих инструментов на мою машину, а затем удалять их, если они мне не нравятся. Другое состоит в том, что если я выполняю вещи через Docker Run Команда, и я получаю различные параметры и настройки так, как они мне нравятся, я могу легко преобразовать эту команду в соответствующее объявление в файле CI.
Вывод
Существует гораздо больше примеров использования Docker для вещей, отличных от создания изображений и запуска контейнерных приложений. Погода для CI/CD, выполнения сценариев или экспериментов с инструментами или чем -то еще, вы можете подумать, не стесняйтесь использовать изображение Docker в следующий раз, когда вы хотите установить и/или получить что -то работу.
Оригинал: «https://dev.to/edlegaultle/docker-as-a-toolbox-26jo»