Compose: Nur bestimmte Dateierweiterungen mounten

Erstellt am 24. Juli 2014  ·  3Kommentare  ·  Quelle: docker/compose

Ich bin mir nicht sicher, ob dies möglich ist, aber ich frage mich, ob es möglich wäre, nur *.py Dateien mit dem volumes Teil von fig.yml einzuhängen.

Ich versuche, ein Verzeichnis zu mounten, das ein Python-Paket enthält. Mein Dockefile sieht so aus:

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

Das Problem ist, dass wenn ich ein fig.yml wie folgt habe:

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

Führen Sie dann aus, versuchen Sie, die mit meiner Python-App installierte CLI auszuführen. Es funktioniert nicht, da pip install -e . einige Verzeichnisse mit dem erstellten Python-Paket unter /code/ . Wenn ich dann mein lokales Quellcodeverzeichnis über dieses Verzeichnis mounte, werden diese Build-Verzeichnisse entfernt und der Befehl schlägt fehl.

$ 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

Wenn ich also nur .py Dateien mounten könnte, würde es all das andere Zeug nicht überschreiben. Ich bin mir nicht sicher, ob dies aus der Ferne möglich ist, und wenn nicht, haben Sie Tipps zur Verwendung von fig für die Entwicklung von Python-Paketen/

Hilfreichster Kommentar

Die beste Lösung, die ich gefunden habe, bestand darin, nur den eigentlichen Code und die Testverzeichnisse zu mounten und die anderen Dateien unberührt zu lassen.

Auf diese Weise werden Quelldateien ohne Neuaufbau aktualisiert, aber die kompilierten Dateien werden nicht überschrieben.

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

Alle 3 Kommentare

Dies ist bei Docker-Volumes leider nicht möglich.

Ist es möglich, pip install zu bringen, die Dateien in einem anderen Verzeichnis außerhalb von /code abzulegen und Python so zu konfigurieren, dass es dort nachschaut? Wenn man sich die Pip-Dokumente ansieht, sieht es so aus, als ob --root oder --target den Zweck erfüllen könnten.

Die beste Lösung, die ich gefunden habe, bestand darin, nur den eigentlichen Code und die Testverzeichnisse zu mounten und die anderen Dateien unberührt zu lassen.

Auf diese Weise werden Quelldateien ohne Neuaufbau aktualisiert, aber die kompilierten Dateien werden nicht überschrieben.

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

Das hat mich stundenlang verrückt gemacht, danke @saulshanabrook

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen