Docker pip安装创buildrecursiontmp / pip-build / tmp / pip-build …文件夹

我对Docker和Python应用程序有点新鲜。 我遇到了一个非常令人困惑的问题,经过一些推动,我奇迹般的解决了这个问题。 但是,我既不了解问题,也不了​​解解决scheme,并且要同时理解。

所以我在我的应用程序的根目录中有一个Dockerfile,可以这样做:

COPY . . RUN apt-get update && apt-get install -y enchant \ && pip install --extra-index-url=${ARTIFACTORY} --no-cache-dir requirements.txt \ && pip install . \ # installs my python app using setup.py && python -m app.run_model ENTRYPOINT ... 

由于磁盘空间不足,一直失败。 好的,好吧,我删除了旧的,未使用的图像。 但是我不认为这是问题,因为它一直在失败,并且还产生了这些超长,超级怪异的recursion文件名,如:

 /tmp/pip-fih7z5-build/tmp/pip-fih7z5-build/tmp/pip-fih7z5-build/tmp/pip-fih7z5-build/tmp/pip-fih7z5-build/tmp/pip-fih7z5-build/tmp/pip-fih7z5-build/tmp/pip-fih7z5-build/tmp/pip-fih7z5-build/tmp/pip-fih7z5-build/tmp/pip-fih7z5-build/... 

在Docker命令周围添加下面的包装器有点奏效:

 COPY . /workdir RUN cd /workdir \ ... && rm -rf /workdir 

通过安装阶段(虽然现在看起来像应用程序进程仍然失败)。我不知道什么是/正在进行。 有没有人有任何见解? 我最好的猜测是不知怎的,这两个pip install正在创造某种recursion的噩梦?

我的setup.py很标准,我想:

 #!/usr/bin/env python from glob import glob from os.path import abspath, basename, dirname, join, splitext from setuptools import find_packages, setup here = abspath(dirname(__file__)) with open(join(here, 'README.md')) as f: long_description = f.read() setup( ... packages=find_packages('src'), package_dir={'': 'src'}, py_modules=[splitext(basename(path))[0] for path in glob('src/*.py')], zip_safe=False, include_package_data=True, install_requires=[ 'scikit-learn==0.18.1', 'scipy==0.19.1', 'nltk==3.2.3', 'requests==2.17.3', 'jsonschema==2.6.0', 'pandas==0.20.1', 'numpy==1.13.0', 'textblob==0.12.0', 'textstat==0.3.1', 'langdetect==1.0.7', 'unidecode==0.4.20', 'Flask==0.12.1', 'Flask-Env==1.0.1', 'pyenchant==1.6.11' ], setup_requires=[ 'flake8==3.3.0', ], tests_require=[], ) 

“`