You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内requirements.txt依赖包未成功安装问题咨询

问题根因

依赖安装失败是多个配置错误共同导致的:

  • 镜像标签冲突:你在compose中同时配置了build: .和官方镜像地址image: jupyter/datascience-notebook:r-4.0.3,Docker会将本地构建完成的镜像直接打上官方镜像的标签,实际启动时会优先使用拉取到的无依赖官方镜像,Dockerfile里写的安装步骤不会在运行的容器里生效。
  • Dockerfile路径错误:jupyter系列镜像默认工作目录是/home/jovyan,你在Dockerfile中写的COPY setup.py /work是将文件复制到容器根目录下的/work绝对路径,后续执行pip install -r ./work/requirements.txt时,会在当前工作目录(/home/jovyan)下找work/requirements.txt,和你复制文件的路径不匹配,安装步骤实际执行时找不到文件,没有完成依赖安装。
  • 构建触发逻辑问题:新增build: .配置后,直接执行docker compose up -d不会自动重新构建已存在的镜像,修改Dockerfile后需要主动加构建参数才会触发新镜像构建。
  • 基础镜像不匹配:Dockerfile使用的基础镜像jupyter/scipy-notebook和compose中指定的jupyter/datascience-notebook:r-4.0.3不一致,本身存在版本 mismatch 问题。
修复方案

1. 修正Dockerfile配置

对齐基础镜像版本,修正文件路径,处理权限问题:

FROM jupyter/datascience-notebook:r-4.0.3

USER root
WORKDIR /home/jovyan/work

# 优先复制依赖声明文件,复用Docker构建缓存,后续改代码不用重装依赖
COPY requirements.txt setup.py ./
RUN pip install --upgrade pip && \
    pip install -e . && \
    pip install --no-cache-dir -r requirements.txt

# 复制剩余项目代码
COPY . .

# 切回jupyter默认运行用户,避免文件权限异常
USER jovyan

2. 修正docker-compose.yml配置

去掉和官方镜像重名的标签配置,清理重复挂载项:

version: '3.7'

networks:
  ling172:

services:
   jupyter:
      build: .
      # 给自定义镜像设置独立标签,避免覆盖官方镜像
      image: almond-analysis:dev
      environment:
        - JUPYTER_TOKEN=password
        - JUPYTER_ENABLE_LAB=yes
      volumes:
        # 移除重复的子目录挂载,仅保留项目根目录挂载即可
        - .:/home/jovyan/work
      ports:
        - 7777:8888
      container_name: almond_analysis
      networks:
        - ling172

3. 重新构建启动

停掉旧容器,强制重新构建镜像后启动:

docker compose down
docker compose up -d --build

启动完成后可以进入容器执行pip show openpyxl验证,返回3.0.10版本信息即说明依赖安装成功,打开notebook即可正常使用。

内容的提问来源于stack exchange,提问作者JohnK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 08:06:19