我試圖運行與碼頭工人,撰寫我的簡單的金字塔應用,下面是我的搬運工文件:DistributionNotFound運行與pserve當搬運工,撰寫
Dockerfile:
FROM python:2.7-onbuild
RUN pip install --no-cache-dir -r requirements_dev.txt
docker- compose.yml
db:
image: mysql:5.6
web:
build: .
command: pserve development.ini --reload
volumes:
- .:/usr/src/app
ports:
- "6543:6543"
links:
- db:db
當我運行docker-compose up
我得到pkg_resources.DistributionNotFound: The 'tenders' distribution was not found and is required by the application
,這很奇怪,因爲我的應用程序應該已經安裝了使用pip install -e .
命令。當我啓動pserve development.ini --reload
它工作得很好
docker-compose run web bash
[email protected]:/tenders# pip freeze | grep tenders # no results
[email protected]:/tenders# pip install -e .
Obtaining file:///tenders
# Skippping most of the outup for more readability
Installing collected packages: tenders
Running setup.py develop for tenders
Successfully installed tenders
[email protected]:/tenders# pip freeze | grep tenders
-e [email protected]:xxx/[email protected]#egg=tenders-master
現在:
事情變得怪異。
我在做什麼錯,我如何使用pip install -e .
(或任何其他命令)自動安裝我的包tenders
?
感謝您的回覆。所以你建議修改Dockerfile,創建並激活virtualenv然後安裝軟件包? – matino
不,我在主機文件系統中創建了virtualenv,以便主文件系統中存在.egg-info文件夾。然後,當您啓動Docker容器並裝入卷時,圖像目錄將被刪除,但來自主機的新目錄也將被作爲.egg-info目錄。這真的不完美,可能有更優雅的解決方案。 –
對不起,我不明白這一點:'但是後來,當你使用docker捲來替換你的容器源目錄時,你的主機文件系統中沒有這個.egg-info目錄。爲什麼我沒有該目錄和我的應用程序目錄存在(注意 - 我不再刪除Dockerfile中的.egg目錄 - 請參閱我的編輯)? – matino