[PYTHON] Construire un serveur de cache Pypi sur QNAP

introduction

Suite à Création d'un serveur de cache Apt dans QNAP Construisez un serveur de cache Pypi en tant que conteneur Docker sur le NAS de QNAP. Nous visons à accélérer les pips et à réduire le trafic sur le LAN.

Serveur de cache Pypi

Utilisez serveur devpi comme serveur de cache pour Pipit. Puisqu'il est exploité par Docker, recherchez l'image devpi. Par exemple, scrapinghub / docker-devpi a été trouvé.

Comme mentionné dans Dernière fois, le NAS disponible était basé sur ARM. Par conséquent, une image devpi pour ARM a été créée séparément. Le Dockerfile de l'image créée est GitHub, et l'image est DockerHub. Il se trouve dans / r / jkawamoto / armhf-devpi-server /).

démarrer le conteneur du serveur devpi

Container Station est utilisé pour gérer le conteneur. Sinon, installez-le depuis l'App Center. Le manuel de Container Station est disponible sur ici.

fig6.png

Recherchez l'image de conteneur à utiliser dans l'onglet de création de conteneur. Par défaut, les images sur DockerHub sont disponibles.

fig7.png

Lorsque vous trouvez l'image souhaitée, installez-la.

fig8.png

Si l'installation est terminée ou déjà installée L'écran de création de conteneur s'ouvre.

Vous pouvez choisir le nom du conteneur comme vous le souhaitez. Les commandes et les points d'entrée peuvent remplacer les paramètres Dockerfile ici, La valeur par défaut est correcte, sauf indication contraire. Les limites du processeur et de la mémoire varient en fonction de l'environnement, laissez donc les valeurs par défaut ici. Ensuite, vérifiez les éléments du réseau dans les paramètres détaillés.

fig9.png

Vérifiez quel port est transféré dans les paramètres réseau. Le serveur devpi utilise 3141 par défaut. Le numéro de port côté hôte est automatique au début, changez-le donc en 3141. De plus, selon l'image de base, il existe des ports vacants qui ne sont pas pertinents, supprimez-les. Dans le cas de la figure ci-dessous, 6080 n'est pas nécessaire, supprimez-le.

fig10.png

Vous pouvez également monter le répertoire utilisé par le serveur de cache dans l'élément de dossier partagé. Après avoir terminé les paramètres ci-dessus, créez un conteneur.

Paramètres côté utilisateur du serveur de cache

Pour utiliser le serveur de cache pour la commande pip --index-url URL du serveur de cache facultative, Passez l'adresse IP du serveur de cache comme option --trusted-host. L'hôte de confiance est nécessaire car le serveur de cache n'écoute que sur http et non sur https. C'est un problème de prendre en charge https, j'ai donc décidé de ne l'utiliser que dans un réseau de confiance. Définissez l'hôte de confiance.

Si l'adresse IP de l'URL du serveur de cache est «xxx.xxx.xxx.xxx», Il devient http: //xxx.xxx.xxx.xxx: 3141 / root / pypi. Notez que la partie / root / pypi est facile à oublier. (Voir Documentation pour les adresses URL autres que / root / pypi)

Cependant, il est difficile d'ajouter des options à la commande pip à chaque fois. Il peut également être utilisé comme fichier de paramétrage. Décrivez le contenu suivant dans ~ / .pip / pip.conf.

pip.conf


[global]
index-url="http://xxx.xxx.xxx.xxx:3141/root/pypi"
trusted-host="xxx.xxx.xxx.xxx"

Après cela, lors de l'utilisation de pip, le serveur de cache sera accessible.

Utiliser avec Docker

L'utilisation la plus courante de pip dans Docker est au moment de la construction, c'est-à-dire dans le Dockerfile, plutôt qu'au moment de l'exécution du conteneur. Utilisez la commande ARG pour décider d'utiliser le serveur de cache lors de la construction du docker.

Dockerfile


ARG PIP_PROXY
RUN if [ -n "$PIP_PROXY" ]; then \
      echo "Set pip proxy: $PIP_PROXY"; \
      IPPORT=${PIP_PROXY#*//}; \
      mkdir -p ~/.pip/; \
      echo "[global]\nindex-url=$PIP_PROXY/root/pypi\ntrusted-host=${IPPORT%:*}" >> ~/.pip/pip.conf; \
      cat ~/.pip/pip.conf; \
    fi

Ajoutez les éléments ci-dessus au Dockerfile. Les variables sont définies dans ʻARG, et les valeurs peuvent être passées avec l'option —build-argpendantdocker build`.

Pour le Dockerfile ci-dessus, entrez --build-arg PIP_PROXY = http: //xxx.xxx.xxx.xxx: 3141 / Lorsqu'il est passé à docker build, ~ / .pip / pip.conf est défini de manière appropriée. Si vous ne définissez pas la variable PIP_PROXY en utilisant —build-arg, elle sera ignorée.

De ce qui précède, il est devenu possible de décider de l'utilisation du serveur de cache au moment de la construction.

Résumé

Préparez un conteneur serveur devpi à l'aide de la Container Station du NAS QNAP. fait. Les personnes dans l'environnement ARM prennent du temps, il sera donc plus facile d'utiliser l'image créée cette fois. De plus, la commande ARG de Dockerfile est utilisée pour changer l'utilisation du serveur de cache au moment de la construction.

Encore une fois, (avec Docker) j'étais un peu heureux de créer un serveur de cache PyPI a été utile.

Recommended Posts

Construire un serveur de cache Pypi sur QNAP
Construisez un serveur WebDAV simple sur Linux
Construire un serveur Samba sur Arch Linux
Configurons un serveur WEB avec Chromebook
[Partie 2] Construisons un serveur Web avec EC2 Linux
Créez un environnement python sur CentOS 7.7 pour votre serveur domestique
Exécutez un serveur Linux avec GCP
Exécutez TensorFlow2 sur le serveur VPS
Enregistrez le package avec PyPI
Créer un environnement python3 sur CentOS7
Créez facilement un serveur DNS en utilisant Twisted
Construire un environnement python sur MacOS (Catallina)
Créer un serveur NFS sur Arch Linux
Créer un serveur CGI fonctionnant sur Python 3 sur Docker
Construire un notebook jupyter sur un serveur distant (CentOS)
Créer un environnement Python + OpenCV sur Cloud9
Exécuter le notebook Jupyter sur un serveur distant
Créer un serveur proxy avec nginx sur plusieurs serveurs distants à l'aide d'Ansible
Créez un environnement LAMP sur votre Docker local
Créez un environnement WardPress sur AWS avec Pulumi
Créez simplement un environnement d'exécution Python 3 sous Windows
Construire un environnement Django sur Raspai (MySQL)
Créez un environnement python avec ansible sur centos6
Créer un environnement Python sur Mac (Mountain Lion)
Créez un environnement de développement Python sur votre Mac
Créer un environnement Kubernetes pour le développement sur Ubuntu
Monter le répertoire d'un autre serveur avec sshfs
Construire un environnement Python sur le serveur Sakura VPS
Source compilez Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web ―― 1. Introduction à Apache
Construire un environnement de développement Python sur Raspberry Pi
Source compile Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web --2 introduction PHP
Créez des serveurs sur Linux et des réseaux locaux avec Raspberry Pi NextCloud et le partage de bureau
Source compile Apache2.4 (httpd 2.4.43) + PHP7.4 sous Linux pour construire un serveur Web --3 MySQL 8.0 introduction
[CentOS 7.3] Créer un serveur FTP sur l'hôte ESXi
Créer un environnement de développement Python basé sur GVim sur Windows 10 (3) GVim8.0 et Python3.6
Créer un environnement de développement Django à l'aide de pyenv-virtualenv sur Mac
Configurer un serveur local simple sur votre Mac
# 2 Créez un environnement Python avec une instance EC2 d'AWS (ubuntu18.04)
Créez un environnement de développement local pour Laravel6.X sur votre Mac
Configurer un serveur de fichiers sur Ubuntu 20.04 à l'aide de Samba
Créer un environnement Python d'apprentissage automatique sur Mac OS
Construire l'extension Python E-Cell 4 sur Windows 7 (64 bits)
Je veux trouver un package populaire sur PyPi
Créer un environnement de développement Python basé sur GVim sur l'installation de Windows 10 (1)
Comment créer un environnement Django (python) sur Docker
Créer un serveur HTTP Apache et Wildfly sur Oracle Linux 8
Créer un environnement de développement Python sur Mac OS X
Configurez un serveur gratuit sur AWS en 30 minutes
Créez un environnement Python sur votre Mac en utilisant pyenv
[Partie 1] Configurons un serveur Micra sur Linux
Le débutant de la CTF a tenté de créer un serveur problématique (Web) [Problème]
Créer un environnement de développement Python à l'aide de pyenv sur MacOS
Version errante de Python 3 sur le serveur de location de Sakura (Remarque)
Comment exécuter Django sur IIS sur un serveur Windows
Comment créer un environnement Python sur Amazon Linux 2
Windows10 (x64) Créer nativement un environnement d'apprentissage automatique
Présentation du serveur de cache nuster
L'histoire de la construction d'un serveur de cache PyPI (avec Docker) et de me rendre un peu heureux à nouveau
Construire TensorFlow sous Windows
Construisez XGBoost sur Windows
construire Python sur Ubuntu