Je ne sais pas si cela est possible, mais je me demande s'il serait possible de monter uniquement, disons, des fichiers *.py
avec la partie volumes
du fig.yml
.
J'essaie de monter un répertoire contenant un package python. Mon Dockefile ressemble à ceci :
FROM python:3
ADD . /code/
WORKDIR /code
RUN pip install -r requirements-testing.txt -e .
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
Le problème est que lorsque j'ai un fig.yml
comme celui-ci :
python:
build: .
volumes:
- .:/code/
Et puis, essayez d'exécuter la CLI installée avec mon application Python, cela ne fonctionne pas, car pip install -e .
crée des répertoires avec le package python construit sous /code/
. Ensuite, lorsque je monte mon répertoire de code source local sur ce répertoire, il supprime ce répertoire de construction et la commande échoue.
$ fig run python dc-campaign-finance-scraper
Traceback (most recent call last):
File "/usr/local/bin/dc-campaign-finance-scraper", line 5, in <module>
from pkg_resources import load_entry_point
File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 2697, in <module>
working_set.require(__requires__)
File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 669, in require
needed = self.resolve(parse_requirements(requirements))
File "/usr/local/lib/python3.4/site-packages/pkg_resources.py", line 572, in resolve
raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: dc-campaign-finance-scraper==0.5.1
Donc, si je ne pouvais monter que des fichiers .py
, cela n'écraserait pas tout le reste. Je ne sais pas si cela est possible à distance, et si non, si vous avez des conseils sur l'utilisation de fig pour le développement de packages python/
Ce n'est pas possible avec les volumes Docker, j'en ai peur.
Est-il possible d'obtenir pip install
pour placer les fichiers dans un répertoire différent, en dehors de /code
, et configurer Python pour qu'il y regarde ? En parcourant les documents Pip , il semble que --root
ou --target
pourraient faire l'affaire.
La meilleure solution que j'ai trouvée consistait uniquement à monter le code réel et les répertoires de tests, et à laisser les autres fichiers intacts.
De cette façon, les fichiers sources seront mis à jour sans reconstruction, mais cela n'écrasera pas les fichiers compilés.
python:
build: .
volumes:
- dc_campaign_finance_scraper:/code/dc_campaign_finance_scraper
- test:/code/test
Cela m'a rendu fou pendant des heures, merci
Commentaire le plus utile
La meilleure solution que j'ai trouvée consistait uniquement à monter le code réel et les répertoires de tests, et à laisser les autres fichiers intacts.
De cette façon, les fichiers sources seront mis à jour sans reconstruction, mais cela n'écrasera pas les fichiers compilés.