Привет, я сейчас работаю над задачей, где требуется собрать и опубликовать питон библиотеку из 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'а.
Спасибо.