Docker pip install创建递归的tmp / pip-build / tmp / pip-build ...文件夹

时间:2017-08-10 19:50:49

标签: python docker recursion pip setup.py

我对Docker和Python应用程序有点新鲜。我遇到了一个非常令人困惑的问题,经过一些按钮推动后,我奇迹般地解决了它。但是,我既不了解问题也不了解解决方案,并且想要理解这两者。

所以我在我的应用程序的根目录中有一个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 ...

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

/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以某种方式创造了某种递归的噩梦?

我的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=[],
)

```

0 个答案:

没有答案