So verwenden Sie Docker zum Erstellen eines privaten pypi-Repositorys

So verwenden Sie Docker zum Erstellen eines privaten pypi-Repositorys

1. Konstruktion

1. Bereiten Sie die Datei htpasswd.txt vor

Die Datei enthält den Benutzernamen und das Passwort zur Verifizierung beim Hochladen des Pakets ins Lager.

pip install htpasswd
htpasswd -sc htpasswd.txt <Benutzername>

2. Starten Sie den Container

docker run --name pypiserver --restart=always -v /data/pypi/packages:/data/packages -v /root/htpasswd.txt:/data/htpasswd.txt -p 8080:8080 -d pypiserver/pypiserver -P htpasswd.txt Pakete
#Sie müssen das Datenverzeichnis und die Datei htpasswd.txt im Voraus auf dem Host erstellen

3. Richten Sie den Nginx-Reverse-Proxy ein

cat /usr/local/nginx/conf/exten/pypi.conf
Upstream-Pypi {
          Server 127.0.0.1:8080;
      }
 
Server {
 
    hören Sie 80;
    Servername pypi.local.me;
    Standort / {
          Proxy_Pass_Header-Server;
          Proxy_set_header Host $http_host;
          Proxy_Redirect aus;
          Proxy_Set_Header X-Real-IP $Remote_Addr;
          proxy_set_header X-Schema $scheme;
          Proxy-Passwort http://pypi;
          }
}

2. Verwendung

1. Erstellen Sie ein Testprojekt

# Erstellen Sie ein Projektverzeichnis mkdir -p linode_example/linode_example
# setup.py erstellen
Katze linode_example/setup.py
von Setuptools Setup importieren
aufstellen(
   Name = "Linode_Beispiel",
   packages=['linode_example'], #Verzeichnis nach dem Hochladen ins Warehouse, z. B. http://pypi.local.me/linode_example
   Beschreibung = 'Hallo Welt, Enterprise Edition',
   version='0.1', # Versionsnummer url='http://github.com/example/linode_example',
   Autor = "Linode",
   Schlüsselwörter = ['pip', 'linode', 'Beispiel']
   )
# Der Inhalt dieser Datei dient nur zu Erklärungszwecken. Sie können ihn entsprechend Ihrem eigenen Paket festlegen. # Erstellen Sie das Hauptprogramm __init__.py cat linode_example/linode_example/__init__.py
def hallo_wort():
   drucken("Hallo Welt")
 
#Paket und python3.7 setup.py hochladen sdist #Paket. Nach der Ausführung befindet sich ein Tarball im Verzeichnis „dist“ twine upload --repository-url http://pypi.local.me dist/* #Beim Hochladen sind Benutzername und Passwort erforderlich: admin/admin123

2. Verwenden Sie das in das Lager hochgeladene Paket

pip install -i http://pypi.local.me --trusted-host pypi.local.me linode_beispiel

Verpackungshinweise:

1. Die Verzeichnisstruktur aller Projekte, die im Git-Repository gepackt werden müssen, muss konsistent sein, um die automatische Integration von Jenkinsfile zu ermöglichen.

2. Die setup.py-Dateien aller Projekte, die verpackt werden müssen, müssen sich im Stammverzeichnis des Projekts befinden.

3. Python verwendet eine einheitliche Version, und die Version jedes Projekts muss korrigiert werden, um die Iteration zu erleichtern.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Der Prozess zum Erstellen eines privaten Docker-Registry-Warehouses
  • Detailliertes Tutorial zur Installation von Harbor Private Warehouse mit Docker Compose
  • Docker-Compose erstellt schnell Schritte für ein privates Docker-Warehouse
  • Schritte für Docker zum Erstellen eines privaten Lagerhafens
  • Der Prozess, mit dem Docker ein privates Lager einrichtet

<<:  Zusammenfassung von 10 erstaunlichen Tricks von Element-UI

>>:  Fragen und Antworten: Unterschiede zwischen XML und HTML

Artikel empfehlen

Details zum Prototypmodus des Javascript-Entwurfsmusters

Inhaltsverzeichnis 1. Prototyp-Modus Beispiel 1 B...

So aktivieren Sie die MySQL-Remoteverbindung auf einem Linux-Server

Vorwort Lernen Sie MySQL, um frühere Nicht-MK-Dat...

Docker mountet lokale Verzeichnisse und Datenvolumen-Container-Operationen

1. Docker mountet das lokale Verzeichnis Docker k...

So überprüfen Sie die Festplattennutzung unter Linux

1. Verwenden Sie den Befehl df, um die gesamte Fe...

Eine kurze Analyse der CSS-Selektorgruppierung

Selektorgruppierung Angenommen, Sie möchten, dass...

Detaillierte Analyse klassischer Fragen zu JavaScript-Rekursionsfällen

Inhaltsverzeichnis Was ist Rekursion und wie funk...

Iframe-Parameter mit Anweisungen und Beispielen

<iframe src=”test.jsp” Breite=”100″ Höhe=”50″ ...

Implementierung der MySQL Master-Slave-Statusprüfung

1. Überprüfen Sie den Synchronisierungsstatus der...

Einführung und Verwendung von Triggern und Cursorn in MySQL

Trigger-Einführung Ein Trigger ist eine spezielle...

JS ES neue Funktionen Vorlagenzeichenfolge

Inhaltsverzeichnis 1. Was ist eine Vorlagenzeiche...

Einfaches Beispiel für HTML-Textformatierung (ausführliche Erklärung)

1. Textformatierung: Dieses Beispiel zeigt, wie T...