Задать вопрос

Каким образом лучше собирать и опубликовывать библиотеку из Docker контейнера?

Привет, я сейчас работаю над задачей, где требуется собрать и опубликовать питон библиотеку из Docker контейнера на локальный pypi сервер. Я использую hatch библиотеку для паблишинга своей библиотеки.

Каким образом это правильно реализовать? Надо ли сначала мне запустить базовый питон контейнер, потом подключиться к нему, забрать код из гит-репозитория, собрать, протестировать и опубликовать? Какие еще есть варианты?

Моя текущая реализация заключается в следующем подходе. Я собираю и опубликовываю библиотеку, когда Docker создает новый образ (docker build ...) Вот мой Dockerfile:

FROM python:3.6.8-stretch

ARG PYPI_USERNAME
ARG PYPI_PASSWORD

RUN mkdir /code

WORKDIR /code

RUN echo "machine pypi.myserver.com\n\tlogin $PYPI_USERNAME\n\tpassword $PYPI_PASSWORD" >> ~/.netrc && \
    mkdir ~/.pip && \
    echo "[global]\nextra-index-url = https://pypi.myserver.com\ntrusted-host = pypi.myserver.com" >> ~/.pip/pip.conf

RUN echo "\n[distutils]\nindex-servers=\n    myserver\n\n[myserver]\nrepository: https://pypi.myserver.com/\nusername: $PYPI_USERNAME\npassword: $PYPI_PASSWORD\n" > ~/.pypirc

COPY . .

RUN pip install . && rm -r ~/.pip && rm ~/.netrc

RUN py.test

RUN hatch build && hatch release -r myserver -u admin
RUN rm ~/.pypirc

CMD [ "echo", "OK" ]


Потом я проверяю статус код последней отработанной команды ($?) и делаю вывод, прошло ли все успешно.

В конце, я удаляю все образы из Docker'а.

Спасибо.
  • Вопрос задан
  • 136 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Как уже подсказали в комментарии, правильнее будет код и данные для PyPI хранить на хосте, а библиотеку собирать в контейнере с монтированием этих данных и build-скрипта. Делать всё через Dockerfile - медленно (на каждый RUN - отдельный слой), любая CI система так или иначе код сама уже вытягивает.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
02 февр. 2025, в 10:45
1000 руб./за проект
02 февр. 2025, в 10:19
7000 руб./за проект
02 февр. 2025, в 08:12
2500 руб./за проект