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.
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 /).
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.
Recherchez l'image de conteneur à utiliser dans l'onglet de création de conteneur. Par défaut, les images sur DockerHub sont disponibles.
Lorsque vous trouvez l'image souhaitée, installez-la.
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.
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.
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.
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.
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-argpendant
docker 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.
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.