Использование SEUPTOOLS_SCM_PRETEND_VERSION для версии пакета внутри Docker с каталогом .git в dockerignorePython

Программы на Python
Ответить
Anonymous
 Использование SEUPTOOLS_SCM_PRETEND_VERSION для версии пакета внутри Docker с каталогом .git в dockerignore

Сообщение Anonymous »

Я использую setuptools scm для динамического предоставления номеров версий пакета Python, и в pyproject.toml есть следующие строки:
...
dynamic = ["dependencies", "version", "readme"]

[tool.setuptools]
packages = ["my_package"]

[tool.setuptools_scm]
...

Когда я пытаюсь установить пакет внутри Docker, процесс завершается неудачей, поскольку я включил каталог .git в .dockerignore.
Вот мой файл Docker:
FROM pytorch/pytorch:2.0.1-cuda11.7-cudnn8-runtime

RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
build-essential curl wget git sox ffmpeg libsndfile1 zip unzip mandoc groff

RUN curl "https://awscli.amazonaws.com/awscli-exe ... x86_64.zip" -o "awscliv2.zip" && \
unzip awscliv2.zip && \
./aws/install && \
rm awscliv2.zip

WORKDIR /workspace

COPY requirements.txt .
RUN pip install --root-user-action=ignore --no-cache-dir --no-deps -r requirements.txt

COPY . .
RUN ./scripts/install_custom_requirements.sh

ARG VERSION
ENV VERSION=$VERSION

RUN SETUPTOOLS_SCM_PRETEND_VERSION=$(python -m setuptools_scm) pip install --root-user-action=ignore --no-cache-dir --no-deps .

Для ясности, в моем .dockerignore есть такая строка:
**/.git

Когда я закомментирую строку, моя сборка Docker работает нормально, но я не хочу копировать все при выполнении COPY . . в файле Docker.
Как я могу сохранить **/.git в своем .dockerignore, одновременно получая setuptools scm для динамического предоставления версии?
В документации (см. раздел «с Docker / Podman») говорится:

Чтобы вообще избежать BuildKit и монтирования папки .git, можно также передать желаемую версию как аргумент сборки. Обратите внимание, что SEUPTOOLS_SCM_PRETEND_VERSION_FOR_${NORMALIZED_DIST_NAME} предпочтительнее SEUPTOOLS_SCM_PRETEND_VERSION.

Но когда я попытался передать эту переменную среды, сборка не удалась. Вот что я попробовал:
#!/usr/bin/env bash

set -e

source vars.env

VERSION=$(git describe --tags --dirty --always)

git submodule update --init --recursive --progress

docker build \
--progress=plain \
--build-arg "VERSION=${VERSION}" \
-t "${DOCKER_IMAGE_NAME}:${VERSION}" \
.



Подробнее здесь: https://stackoverflow.com/questions/775 ... r-with-git
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»