我不知道这是可能的,但我想知道是否有可能只安装,说, *.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 包开发的任何提示/
恐怕这对于 Docker 卷是不可能的。
是否可以让pip install
将文件放在/code
之外的不同目录中,并配置 Python 以查看那里? 浏览Pip 文档,看起来--root
或--target
可能会起作用。
我找到的最好的解决方案是只挂载实际的代码和测试目录,而保持其他文件不变。
这样源文件将在不重建的情况下更新,但不会覆盖已编译的文件。
python:
build: .
volumes:
- dc_campaign_finance_scraper:/code/dc_campaign_finance_scraper
- test:/code/test
这让我疯狂了几个小时,谢谢@saulshanabrook
最有用的评论
我找到的最好的解决方案是只挂载实际的代码和测试目录,而保持其他文件不变。
这样源文件将在不重建的情况下更新,但不会覆盖已编译的文件。