SASHKEVICH / docker-module

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Модуль 3.1 Docker

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

  • написание Dockerfile;
  • использование команды docker build;
  • применение лучших практик по написанию Dockerfile;
  • оптимизацию процесса сборки;
  • использование команд управления контейнерами и просмотра их статуса;
  • использование volumes;

Предварительная настройка

  1. Предполагается, что вы выполнили задание по модулю Git и имеете опыт использования git и настроенную среду для работы с CLI-утилитами (консоль в Linux/MacOS X, GitBash или виртуальную машину в Windows).
  2. Установите и запустите Docker engine.

Задание

В качестве тестового приложения, используем пример реализации задания по модулю Git.

  1. Создайте собственный форк репозитория с примером.
  2. Добавьте Dockerfile для сборки следующих образов.
    1. Образ 1, который содержит:
      • Необходимые файлы и утилиты для осуществления сборки версии резюме внутри контейнера.
      • Использует в качестве основной команды task и позволяет выполнять автоматизированные задачи при запуске контейнера.
      • При запуске контейнера без дополнительных агрументов, выполняет задачу сборки.
    2. Образ 2, который содержит только собранную версию резюме в формате HTML и экспортирует её для использования в других контейнерах.
  3. Автоматизируйте задачу сборки образов.
  4. Оптимизируйте процесс сборки образов.

Вопросы

  • Предложите вариант того, как можно создать 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 для анализа размера слоёв)
    • максимальное использование кэша при изменении исходного кода приложения и повторной сборки.

About