[PYTHON] Die Geschichte, einen PyPI-Cache-Server (mit Docker) aufzubauen und mich wieder ein wenig glücklich zu machen

Ich war froh, den Paket-Repository-Cache-Server (apt-cacher-ng) von APT lokal (in Docker) erstellen zu können.

Ich habe im Artikel einen APT-Cache-Server erstellt.

Ich bin ein Python-Benutzer, daher wollte ich nicht nur mit der Installation von apt-get, sondern auch mit der Download-Zeit für die Pip-Installation Zeit sparen.

devpi-server

Es scheint, dass Sie einen PyPI-Cache-Server einfach erstellen können, indem Sie ein wunderbares Paket namens devpi-server installieren.

Ich habe beschlossen, dies auch in die Docker-Datei zu schreiben.

Beachten Sie, dass die Pip-Installation über einen [lokalen Caching-Mechanismus] verfügt (https://pip.pypa.io/en/latest/reference/pip_install.html?highlight=download#caching), sodass diese Methode einfach ist. Es scheint nicht viel Sinn zu machen, wenn Sie nur eine einzige auf dem Server installieren.

Besonders nützlich für.

Dockerfile

Unten ist das Hauptthema der Docker-Datei.

Dockerfile


#
# Build:
#     docker build -t devpi-server .
#
# Run:
#     docker run -d -p 3141:3141 --name devpi-server-run devpi-server
#
FROM ubuntu
EXPOSE 3141
VOLUME ["/var/cache/devpi"]

ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
    apt-get install --no-install-recommends -y python3-pip && \
    pip3 install -q -U pip devpi-server

CMD chmod 777 /var/cache/devpi && \
    devpi-server \
        --serverdir /var/cache/devpi \
        --host 0.0.0.0 --port 3141

Wie benutzt man

--trusted-hostIm Hostnamen des Cache-Servers--index-urlGeben Sie die URL des Ziel-Cache-Servers mit an.

$ pip install --trusted-host XXX.XXX.XXX.XXX --index-url http://XXX.XXX.XXX.XXX:3141/root/pypi/ package-name

Wie Sie unter https://pip.pypa.io/en/latest/user_guide.html#environment-variables sehen können, Die Pip-Installationsoptionen können auch durch Umgebungsvariablen gesteuert werden. In diesem Fall wurde PIP_ als Präfix verwendet und mit Großbuchstaben und Schlangenfällen verbunden. Angegeben durch PIP_TRUSTED_HOST und PIP_INDEX_URL.

Vergleich

Gemessen mit dem Zeitbefehl. Ich habe es nur einmal gemessen, also habe ich keinen strengen Vergleich gemacht, aber ich fand, dass es genug war. --No-Cache-Verzeichnis wird angegeben, um den lokalen Cache zu deaktivieren.

$ time pip install --no-cache-dir numpy scipy matplotlib pandas ipython

Kein Cache

real	3m29.583s

Mit Cache

real	0m24.950s

Es gibt einen großen Unterschied. Ich hatte das Gefühl, viel Zeit damit zu verbringen, scipy und matplotlib herunterzuladen, besonders ohne den Cache.

Recommended Posts

Die Geschichte, einen PyPI-Cache-Server (mit Docker) aufzubauen und mich wieder ein wenig glücklich zu machen
Die Geschichte, mit Python eine Hanon-ähnliche Partitur zu machen
Ein Memo zum Erstellen einer Django (Python) -Anwendung mit Docker
Eine Geschichte über einen Amateur, der mit Python (Kivy) einen Blockbruch macht ②
Eine Geschichte über einen Amateur, der mit Python (Kivy) einen Blockbruch macht ①
Eine Geschichte über das zufällige Erstellen eines kurzen Songs mit Sudachi Py
Eine Geschichte über einen GCP-Anfänger, der versucht, mit GCE einen Micra-Server aufzubauen
Eine Geschichte über die Automatisierung von Online-Mahjong (Jakutama) mit OpenCV und maschinellem Lernen
Erstellen Sie mit Docker eine CentOS Linux 8-Umgebung und starten Sie Apache HTTP Server
Die Geschichte einer Soundkamera mit Touch Designer und ReSpeaker
Erstellen Sie einen Pypi-Cache-Server auf QNAP
Richten Sie mit Docker einen Samba-Server ein
Eine Geschichte über maschinelles Lernen mit Kyasuket
Eine Geschichte über Python Pop und Append
Stellen Sie Docker in Windows Home und führen Sie einen einfachen Webserver mit Python aus
Eine Geschichte zum Erstellen einer IDE-Umgebung mit WinPython unter einem alten Windows-Betriebssystem.
Ich habe versucht, einen x86-Bootloader zu erstellen, der vmlinux mit Rust booten kann
Starten Sie mit Docker einen einfachen Python-Webserver
Eine Geschichte, die von Go's globalen Variablen und ihrem Umfang abhängig ist
Eine Geschichte über die Implementierung eines Anmeldebildschirms mit Django
Starten Sie einen Webserver mit Python und Flask
Eine Geschichte über das Ändern von Python und das Hinzufügen von Funktionen