Compose: 只挂载特定的文件扩展名

创建于 2014-07-24  ·  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/

然后运行尝试运行与我的 Python 应用程序一起安装的 CLI,它不起作用,因为pip install -e ./code/下使用构建的 python 包创建了一些目录。 然后,当我将本地源代码目录挂载到该目录上时,它会删除那些构建目录并且命令失败。

$ 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

这让我疯狂了几个小时,谢谢@saulshanabrook

此页面是否有帮助?
0 / 5 - 0 等级