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

如何让Jupyter容器共享Docker基础镜像中的Python依赖包

解决方案:Flask与Jupyter共享Python依赖的Docker配置

问题根源拆解

  • 方案1的痛点:两个镜像依赖完全独立,每次在Jupyter里都要重新装包,重复劳动且版本易不一致
  • 方案2的问题:自定义镜像里装了Jupyter包,但jupyter命令不在系统PATH里,容器启动时找不到可执行文件

步骤1:修复自定义基础镜像的Dockerfile

确保Jupyter命令能被系统找到,同时正确安装所有依赖:

# 选个稳定的Python基础镜像,比如3.10-slim
FROM python:3.10-slim

# 设定工作目录
WORKDIR /app

# 把pip安装的可执行文件路径加入系统PATH(如果用--user安装的话)
ENV PATH="/root/.local/bin:${PATH}"

# 复制依赖清单
COPY requirements.txt .

# 安装所有依赖,包括Flask和Jupyter相关包
# 用--user是避免全局权限问题,不想用的话直接去掉--user,全局安装也可以
RUN pip install --no-cache-dir --user -r requirements.txt

注意:requirements.txt里要确保包含jupyter以及jupyter-notebook这类核心包,光装jupyter==1.0.0元包可能不够,建议补充jupyter-notebook>=6.5.0


步骤2:编写正确的docker-compose.yml

让两个服务共用这个自定义镜像,分别启动不同的服务:

version: '3.8'

services:
  flask-app:
    build: .  # 直接基于当前目录的Dockerfile构建镜像
    ports:
      - "5123:5000"  # 把Flask默认的5000端口映射到主机的5123
    command: flask run --host=0.0.0.0  # 允许容器外部访问Flask服务
    volumes:
      - ./your-flask-code:/app  # 挂载本地Flask代码目录,改代码不用重新构建镜像

  jupyter-notebook:
    build: .  # 和Flask用同一个镜像,保证依赖完全一致
    ports:
      - "8123:8888"  # 把Jupyter默认的8888端口映射到主机的8123
    command: jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root --NotebookApp.token='' --NotebookApp.password=''
    volumes:
      - ./your-notebooks:/app/notebooks  # 挂载本地笔记本目录,保存的笔记不会丢
      - ./your-flask-code:/app/your-flask-code  # 可选:挂载Flask代码到Jupyter,直接测试代码

关键注意事项

  • 依赖统一:两个服务用同一个镜像,numpy、pandas这些包版本完全一致,不用再重复安装
  • PATH问题解决:Dockerfile里明确把pip安装的可执行路径加入PATH,确保jupyter命令能被找到
  • 开发便捷性:挂载本地目录后,修改代码或笔记本实时生效,不用反复构建镜像
  • Jupyter参数说明:--ip=0.0.0.0允许外部访问,--allow-root适配基础镜像的root用户,--token=''是为了快速访问,生产环境记得设置密码

验证流程

  1. 构建镜像:docker compose build
  2. 启动服务:docker compose up -d
  3. 测试Flask:浏览器打开http://localhost:5123
  4. 测试Jupyter:浏览器打开http://localhost:8123
  5. 验证依赖:在Jupyter新建笔记本,运行import numpy; print(numpy.__version__),确认和Flask环境版本一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 18:54:58