【问题标题】:docker build with pip install overwrites existing packages带有 pip install 的 docker build 会覆盖现有的包
【发布时间】:2020-02-19 07:16:02
【问题描述】:

这是我的 Dockerfile:

FROM docker_with_pre_installed_packages:1.0
ADD requirements.txt .
RUN pip install -r requirements.txt
ADD app app
WORKDIR /

docker_with_pre_installed_pa​​ckages 有:

/usr/local/lib/python2.7/site-packages/my_packages/db
/usr/local/lib/python2.7/site-packages/my_packages/config
/usr/local/lib/python2.7/site-packages/my_packages/logging

requirements.txt:

my_package.redis-db
my_package.common.utils

运行后

docker build -t test:1.0 .
docker run -it test:1.0 bash
cd /usr/local/lib/python2.7/site-packages/my_packages/
ls
__init__.py redis_db common

pip freeze 仍然显示旧包 我仍然可以看到 dist-info 目录 但是当尝试运行 python 并从我得到的预安装包中导入一些东西时:

ImportError: No module named my_package.config

谢谢!

【问题讨论】:

    标签: python docker pip


    【解决方案1】:

    您是尝试在 docker_with_pre_installed_pa​​ckages 中安装 python 还是只是复制了一些文件?看起来python没有正确安装。 顺便说一句,从今年开始不支持 Python 2.7,强烈建议使用 Python 3。 尝试使用python docker镜像并安装依赖并进行比较。

    FROM python:3
    ADD requirements.txt /
    ADD app app
    RUN pip install -r requirements.txt
    CMD [ "python", "./my_script.py" ]
    

    【讨论】:

    • 你有没有尝试在容器内再次安装依赖项,我的意思是 ssh 到容器和 pip 安装要求,检查它说什么?
    • 如果我试图在容器中安装它可以工作......很奇怪
    • 似乎没有安装依赖项,如果它工作的话。您在构建 docker 镜像时是否遇到任何错误?
    【解决方案2】:

    我建议检查您的 docker 容器由于执行而发生的确切变化

    pip install -r requirements.txt
    

    我愿意

    1) 在 pip install 之前从行构建 docker 容器

    FROM docker_with_pre_installed_packages:1.0
    ADD requirements.txt .
    CMD /bin/bash
    

    2) 运行docker并手动执行pip install -r requirements.txt

    然后在 docker 外部(但它仍在运行)我会看到上述命令通过执行在我的容器中造成的差异

    3) docker ps 查看 container_id(例如 397cd1c9939f

    4) docker diff 397cd1c9939f 看看区别

    希望对你有帮助。

    【讨论】:

      【解决方案3】:

      问题在于运行此构建的詹金斯奴隶。 我试着在一个新的上运行它,一切都得到了修复

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-24
        • 2015-11-09
        • 2021-12-15
        • 1970-01-01
        • 2017-01-14
        • 1970-01-01
        • 2020-03-05
        相关资源
        最近更新 更多