Я использую 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
Использование SEUPTOOLS_SCM_PRETEND_VERSION для версии пакета внутри Docker с каталогом .git в dockerignore ⇐ Python
Программы на Python
1763055758
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-linux-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}" \
.
Подробнее здесь: [url]https://stackoverflow.com/questions/77572077/using-setuptools-scm-pretend-version-for-package-version-inside-docker-with-git[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия