Домашнее задание №5

Домашнее задание №5

Соберите Docker образ для проекта counter-backend. В качестве базового образа используйте python:3.11.6-slim-bookworm. Для сборки используйте следующие команды:

Установка зависимостей для сборки пакета:
$ python -m pip install \
  --no-color \
  --no-cache-dir \
  --disable-pip-version-check \
  --no-python-version-warning \
  --no-warn-script-location \
  --break-system-packages \
  --progress-bar off \
  poetry setuptools wheel

Загрузка всех зависимостей в папку dist/vendor:
$ mkdir -p dist
$ poetry export \
  --without-hashes \
  --format constraints.txt \
  --output dist/constraints.txt
$ poetry run \
  python -m pip wheel \
   --isolated \
   --requirement dist/constraints.txt \
   --wheel-dir dist/vendor

Пакетирование проекта в папку dist:
$ poetry build --format wheel

Установка всех зависимостей:
$ packages=$(\
  find 'dist' 'dist/vendor' \
    -maxdepth 1 \
    -iname '*.whl' \
    -exec realpath {} \; \
    -print0 \
   | xargs --null)
$ python -m pip install \
  --isolated \
  --no-index \
  --no-color \
  --no-cache-dir \
  --disable-pip-version-check \
  --no-python-version-warning \
  --no-warn-script-location \
  --no-deps \
  --break-system-packages \
  --progress-bar off \
  ${packages}
Эти команды находят все пакеты Python собранные предыдущими командами и затем устанавливают их.

Запуск модуля:
$ python -m counter_backend

Напишите три варианта Dockerfile:

  • Без использования многоступенчатой сборки и запуском процесса из-под суперпользователя
  • С использованием многоступенчатой сборки ()
  • С использованием многоступенчатой сборки и понижением привилегий:
  • Загрузите пакеты первым и вторым набором команд, скопируйте в финальный слой и установите в нем;
  • Воспользуйтесь приведенным выше скриптом для создания пользователя

Загрузите написанные Dockerfile в курсовой GitLab, в отдельный репозиторий. Если вы не пользовались ранее Git, то просмотрите краткую справку, приведенную в лонгриде.