Lors de la construction de Docker, Je veux pip installer une bibliothèque d'un référentiel privé tel que github ou BitBucket
La clé pour accéder au référentiel privé se trouve sous $ HOME / .ssh
Créez une roue localement et copiez-la avec Dockerfile
pip wheel djando
(Bien que django ne soit pas privé)
Exemple 1: Mettre Django sur une roue -> Django-1.8.1-py2.py3-none-any.whl compatible python2-3, indépendant du système d'exploitation (tous) Il n'y a pas de problème dans ce cas,
Exemple 2: Obtenir MysqlClient sur la roue -> mysqlclient-1.3.10-cp27-cp27m-macosx_10_10_intel.whl CPython2.7 limite l'environnement de construction et d'exécution pour macosx10.10. Puisque Docker Container s'exécute sur le noyau Linux, il peut interférer avec son fonctionnement.
Ce serait bien de l'obtenir sous Linux et de le convertir en roue, mais cela a pris trop de temps et il est tombé.
Incorporez la clé dans l'image. Le livre Docker d'O'REILLY dit "Ne le fais pas". Rejeté parce que c'est trop hostile pour la sécurité.
Je ne veux pas que la clé reste dans l'image de façon permanente, je devrais donc copier la clé et la supprimer après l'installation de pip.
Dockerfile.
COPY id_rsa /root/.ssh/
COPY id_rsa.pub /root/.ssh/
RUN chmod 600 /root/.ssh/id_rsa && \
chmod 600 /root/.ssh/id_rsa.pub && \
echo "Host github.com\n\tStrictHostKeyChecking no\n" >> /root/.ssh/config
RUN pip install -r requirements.txt
RUN rm /root/.ssh/*
Comme ça. Le droit d'accès du fichier de clé doit être 600 (.ssh vaut 700). De plus, si HostKeyChecking n'est pas désactivé, une erreur se produira dans la construction. Une fois l'installation de pip terminée, supprimez toutes les informations d'identification de l'image.
Les fichiers clés sont généralement situés sous $ HOME / .ssh localement, et les builds Docker ne peuvent accéder qu'au répertoire contenant le Dockerfile et les fichiers qu'il contient en tant que répertoire supérieur. Par conséquent, vous devez copier le fichier de clé et l'amener dans une zone accessible par la version Docker. Ce n'est pas très cool de le garder en permanence, donc je pense que c'est une bonne idée d'écrire un script de construction qui le copie et le supprime temporairement après la construction. Ce n'est pas complet avec les commandes Docker, mais cela ne peut pas être aidé ...
Faites de votre mieux uniquement pour la bibliothèque du référentiel privé, transformez-la en une roue adaptée à l'environnement d'exécution de Docker et installez normalement le reste depuis Internet dans la construction.
Cela dépend du nombre de bibliothèques dans le référentiel privé, mais je me sens bien. Mais avons-nous également besoin d'un contrôle de version de roue ...
Proposition 2-2 pour la distribution comme environnement de développement personnel, Proposition 3 pour l'opération de production ... (Non)
Recommended Posts