Saya tidak yakin apakah ini mungkin, tetapi saya bertanya-tanya apakah mungkin untuk me-mount saja, katakanlah, *.py
file dengan bagian volumes
dari fig.yml
.
Saya mencoba memasang direktori yang memiliki paket python di dalamnya. Dockefile saya terlihat seperti ini:
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
Masalahnya adalah ketika saya memiliki fig.yml
seperti ini:
python:
build: .
volumes:
- .:/code/
Dan kemudian jalankan coba jalankan CLI yang diinstal dengan aplikasi Python saya, itu tidak berhasil, karena pip install -e .
membuat beberapa direktori dengan paket python bawaan di bawah /code/
. Kemudian ketika saya memasang direktori kode sumber lokal saya di atas direktori itu, itu menghapus direktori build itu dan perintah gagal.
$ 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
Jadi jika saya hanya dapat memasang file .py
, itu tidak akan menimpa semua hal lainnya. Saya tidak yakin apakah ini mungkin dari jarak jauh, dan jika tidak, apakah Anda memiliki tip menggunakan fig untuk pengembangan paket python/
Ini tidak mungkin dengan volume Docker, saya khawatir.
Apakah mungkin untuk mendapatkan pip install
untuk meletakkan file di direktori yang berbeda, di luar /code
, dan mengkonfigurasi Python untuk mencari di sana? Melirik ke Pip docs , sepertinya --root
atau --target
mungkin berhasil.
Solusi terbaik yang saya temukan hanyalah memasang kode aktual dan direktori pengujian, dan membiarkan file lain tidak tersentuh.
Dengan cara ini file sumber akan diperbarui tanpa membangun kembali, tetapi tidak akan menimpa file yang dikompilasi.
python:
build: .
volumes:
- dc_campaign_finance_scraper:/code/dc_campaign_finance_scraper
- test:/code/test
Ini membuatku gila selama berjam-jam, terima kasih @saulshanabrook
Komentar yang paling membantu
Solusi terbaik yang saya temukan hanyalah memasang kode aktual dan direktori pengujian, dan membiarkan file lain tidak tersentuh.
Dengan cara ini file sumber akan diperbarui tanpa membangun kembali, tetapi tidak akan menimpa file yang dikompilasi.