При частой сборке образов docker возникает желание сделать этот процесс быстрее. Порой pypi.python.org усиленно тормозит, а локальный кэш убит. На помощь приходит devpi.

Изначально я хотел поднять локальный кэш pypi силами nginx (например, так), но потом подумал "а вдруг понадобятся приватные репы?". Они скорее всего не понадобятся, но для галочки пусть будут.

Список требований приблизительно такой:

  • поддержка Basic HTTP Auth, чтобы супостаты не лезли
  • SSL через LetsEncrypt
  • приватный реестр пакетов
  • интеграция с nginx-proxy в том или иной виде
  • поддержка docker

Вообще удивительно, что таких проектов очень мало. Среди них есть:

  • pypi-server (не путать с pypiserver) с готовым docker-compose
  • devpi, которому посвящена эта статья
  • proxypypi, который не поддерживается
  • pypicache, который основательно протух
  • ну и еще несколько аналогичных проектов

Почти всё найденное мной имеет крайне низкий рейтинг на github, да и народ вроде бы как не особо интересуется этой темой, хотя меня вот лично совесть мучает качать по 50 раз одни и те же пакеты с несчастного pypi. 

В итоге мой выбор пал на devpi, хоть он и не особо популярен. Его можно запустить через devpi-server --start, и пользоваться локальным кэшем без проблем и лишних настроек, но основная идея всё-таки в том, чтобы использовать собственный  pypi для CI.

Чтобы ускорить разворачивание всей этой радости я запилил (местами позаимствовал из других сборок) свой devpi image + docker-compose. Инструкция по разворачиванию в README в самой репе.

night-crawler
Просмотров: 145
blog comments powered by Disqus