Compose: Monter uniquement des extensions de fichiers spécifiques

Créé le 24 juil. 2014  ·  3Commentaires  ·  Source: docker/compose

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/

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.

python:
  build: .
  volumes:
    - dc_campaign_finance_scraper:/code/dc_campaign_finance_scraper
    - test:/code/test

Tous les 3 commentaires

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

Cette page vous a été utile?
0 / 5 - 0 notes