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

Каким образом лучше собирать и опубликовывать библиотеку из 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'а.

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

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

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽