Compose: Монтировать только определенные расширения файлов

Созданный на 24 июл. 2014  ·  3Комментарии  ·  Источник: docker/compose

Я не уверен, возможно ли это, но мне интересно, можно ли смонтировать только, скажем, *.py файлы с частью volumes из fig.yml .

Я пытаюсь смонтировать каталог, в котором есть пакет python. Мой Dockefile выглядит так:

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

Проблема в том, что когда у меня есть fig.yml вроде этого:

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

И затем запустите, попробуйте запустить CLI, установленный с моим приложением Python, это не сработает, потому что pip install -e . создает некоторые каталоги со встроенным пакетом python под /code/ . Затем, когда я монтирую свой локальный каталог исходного кода над этим каталогом, он удаляет этот каталог сборки, и команда не выполняется.

$ 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

Так что, если бы я мог монтировать только файлы .py , он бы не перезаписал все остальное. Я не уверен, возможно ли это удаленно, а если нет, есть ли у вас какие-либо советы по использованию fig для разработки пакетов python /

Самый полезный комментарий

Лучшее решение, которое я нашел, заключалось в монтировании фактических каталогов кода и тестов, а остальные файлы оставались нетронутыми.

Таким образом, исходные файлы будут обновлены без перекомпоновки, но не будут перезаписывать скомпилированные файлы.

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

Все 3 Комментарий

Боюсь, это невозможно с томами Docker.

Можно ли получить pip install чтобы поместить файлы в другой каталог, за пределами /code , и настроить Python для просмотра туда? Просматривая документы Pip , похоже, что --root или --target могут помочь.

Лучшее решение, которое я нашел, заключалось в монтировании фактических каталогов кода и тестов, а остальные файлы оставались нетронутыми.

Таким образом, исходные файлы будут обновлены без перекомпоновки, но не будут перезаписывать скомпилированные файлы.

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

Это сводило меня с ума на несколько часов, спасибо

Была ли эта страница полезной?
0 / 5 - 0 рейтинги