これが可能である場合、私はわからないが、言うだけマウントすることが可能である場合、私は疑問に思って*.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
ファイルしかマウントできなかったとしても、他のすべてのものを上書きすることはありません。 これがリモートで可能かどうかはわかりません。不可能な場合は、Pythonパッケージ開発にfigを使用するためのヒントがありますか。
これはDockerボリュームでは不可能です。恐れ入ります。
pip install
を取得して、ファイルを/code
外部の別のディレクトリに配置し、そこを参照するようにPythonを構成することは可能ですか? Pipのドキュメントを見ると、 --root
または--target
うまくいくようです。
私が見つけた最善の解決策は、実際のコードとテストディレクトリをマウントし、他のファイルはそのままにしておくことでした。
このようにして、ソースファイルは再構築せずに更新されますが、コンパイルされたファイルは上書きされません。
python:
build: .
volumes:
- dc_campaign_finance_scraper:/code/dc_campaign_finance_scraper
- test:/code/test
これは私を何時間も夢中にさせていました、ありがとう@saulshanabrook
最も参考になるコメント
私が見つけた最善の解決策は、実際のコードとテストディレクトリをマウントし、他のファイルはそのままにしておくことでした。
このようにして、ソースファイルは再構築せずに更新されますが、コンパイルされたファイルは上書きされません。