Целью данного модуля является знакомство с Docker и предоставляемыми им средствами для сборки образов и запуска контейнеров.
В ходе выполнения этого практического задания, мы рассмотрим:
- написание Dockerfile;
- использование команды docker build;
- применение лучших практик по написанию Dockerfile;
- оптимизацию процесса сборки;
- использование команд управления контейнерами и просмотра их статуса;
- использование volumes;
- Предполагается, что вы выполнили задание по модулю Git и имеете опыт использования git и настроенную среду для работы с CLI-утилитами (консоль в Linux/MacOS X, GitBash или виртуальную машину в Windows).
- Установите и запустите Docker engine.
В качестве тестового приложения, используем пример реализации задания по модулю Git.
- Создайте собственный форк репозитория с примером.
- Добавьте Dockerfile для сборки следующих образов.
- Образ 1, который содержит:
- Необходимые файлы и утилиты для осуществления сборки версии резюме внутри контейнера.
- Использует в качестве основной команды
task
и позволяет выполнять автоматизированные задачи при запуске контейнера. - При запуске контейнера без дополнительных агрументов, выполняет задачу сборки.
- Образ 2, который содержит только собранную версию резюме в формате HTML и экспортирует её для использования в других контейнерах.
- Образ 1, который содержит:
- Автоматизируйте задачу сборки образов.
- Оптимизируйте процесс сборки образов.
- Предложите вариант того, как можно создать fork только средствами Git, без использования фукнкционала Github (
Fork
>Create a new fork
) - Укажите, в чём разница
ENTRYPOINT
иCMD
, и когда предпочтительней их использовать. - Укажите в чём разница
ADD
иCOPY
, и когда предпочтительней их использовать.
- Для ответов на вопросы, используйте Issues и механизм упоминаний (https://www.google.com/search?q=github+mentions) пользователя
digital-academy-devops
для отправки нотификаций о готовности ответа к проверке. - Выполнение всех этапов задания необходимо осуществлять в рамках одной ветки.
- Pull request для ветки не обязательно должен быть создан по завершении работы и полной готовности кода к резензированию (code review). Вы можете создать PR в любой момент при необходимости получения комментариев - задавайте вопрос в комментариях к своему коду и адресуйте его
digital-academy-devops
. - По завершении работы и готовности к code review, убедитесь что вы завершили (resolve conversations) все ветки обсуждений и укажите в комментариях к PR что он готов к ревью.
На заметку В платной версии GitHub, для существует возможность создать набросок PR (Pull request Draft), позволяющий получить обратную связь по ходу работы над задачей, а по завершении опубликовать готовый PR из этого наброска.
- Минимальный набор необходимых инструкций Dockerfile для изучения:
- Для сборки обоих образов, используйте один Dockerfile и milti-stage build.
- Автоматизация сборки осуществляется средствами Taskfile.
- Оптимизация, в первую очередь, включает в себя:
- сокращение размера образа (используйте docker history для анализа размера слоёв)
- максимальное использование кэша при изменении исходного кода приложения и повторной сборки.