Pigsty 部署 Jupyter Notebook:基于 Docker Compose 的交互式数据分析环境搭建指南
数据库运维云原生高可用监控【免费下载链接】pigstyEnterprise-Grade OSS PostgreSQL Distribution with HA, PITR, IaC, Monitor, 12 kernel forks and 575 PG extensions. Best-of-breed products integrated as a platform. Self-host Postgres like a Pro!项目地址https://gitcode.com/GitHub_Trending/pi/pigsty点击查看免费下载导读本文面向在 Pigsty 环境中自建数据科学工作台的开发者完整讲解 app/jupyter 模块的部署、配置与使用从修改默认口令、准备数据目录到通过make命令一键拉起 Jupyter再到在 Notebook 中直连 Pigsty 管理的 PostgreSQL 集群执行 SQL 查询。读完本文你将掌握一套可复用、可镜像离线分发、可被 Nginx 门户反代lab.pigsty的 Jupyter 部署方案并了解 Pigsty 中基于uv的原生 JupyterLab 安装路线作为对照。模块概览一个“开箱即用”的 Jupyter Docker 封装在 Pigsty 的 app 目录下jupyter子模块是一个极简的 Docker 封装不引入额外编排工具只靠一个 docker-compose.yml、一个 Makefile 和一个.env配置入口即可完成 Jupyter 的拉起与管理。整个模块包含三个核心文件.env集中定义镜像、端口、访问令牌等全部可调参数docker-compose.yml声明容器服务实现make up/make pull等 Compose 操作Makefile将常用运维动作封装为make目标并提供一个不使用 Compose、直接docker run的run目标。从 app/README.md 的定位描述看Jupyter 被归类为“与 PostgreSQL 配合良好的数据分析 IDE”是 Pigsty App 生态Supabase、PgAdmin、Metabase、Dify 等中的一员因此其默认配置端口8888、访问地址lab.pigsty与整套门户体系保持了一致。快速上手三步拉起 Jupyter按照 app/jupyter/README.md 的说明部署只需三步修改默认口令编辑.env中的JUPYTER_TOKEN创建数据目录执行make dir目录属主为1000:100拉起容器执行make up由 Docker Compose 启动 Jupyter。一条命令即可完成第 2、3 步cd ~/pigsty/app/jupyter ; make dir up启动后通过以下任一地址访问http://lab.pigsty经 Pigsty Nginx 门户反代http://10.10.10.10:8888直接访问节点端口带令牌的直达链接http://lab.pigsty?tokenpigsty默认口令为pigsty与.env中JUPYTER_TOKENpigsty的初始值一致。生产环境务必先修改该口令——docker-compose.yml与.env中均有明确注释提醒。配置项说明.env与 Compose 的对应关系.env 定义了全部可调参数其与 docker-compose.yml 的对应关系如下变量默认值作用Compose 中的消费位置JUPYTER_IMAGEquay.io/jupyter/minimal-notebook:latest容器镜像image: ${JUPYTER_IMAGE}JUPYTER_PORT8888宿主机映射端口ports: ${JUPYTER_PORT}:8888JUPYTER_TOKENpigstyJupyter 访问令牌口令environment: JUPYTER_TOKEN${JUPYTER_TOKEN}NB_USER/NB_UIDjovyan/1000注释态容器内用户名与 UID注释保留按需启用镜像默认选用 Jupyter 官方 Docker Stacks 中的minimal-notebook。.env中还以注释形式列出了其他可选镜像可按需切换#JUPYTER_IMAGEquay.io/jupyter/scipy-notebook:latest #JUPYTER_IMAGEquay.io/jupyter/r-notebook:latest #JUPYTER_IMAGEquay.io/jupyter/julia-notebook:latest #JUPYTER_IMAGEquay.io/jupyter/tensorflow-notebook:latest #JUPYTER_IMAGEquay.io/jupyter/pytorch-notebook:latest #JUPYTER_IMAGEquay.io/jupyter/datascience-notebook:latest #JUPYTER_IMAGEquay.io/jupyter/all-spark-notebook:latest这些镜像的选择建议来自官方文档 jupyter-docker-stacks.env 中已附链接说明例如科学计算可选scipy-notebook、统计建模可选r-notebook、AI 训练可选pytorch-notebook/tensorflow-notebook。Compose 服务的核心映射为端口${JUPYTER_PORT}:8888将宿主机端口映射到容器内 Jupyter 默认端口卷/data/jupyter:/home/jovyan/work宿主机数据目录挂载为容器内工作目录实现数据持久化环境变量JUPYTER_TOKEN传入容器作为访问令牌。docker-compose.yml底部还附有一条等价的纯docker run参考命令docker run -it -p 8888:8888 -v /data/jupyter:/home/jovyan/work \ -e JUPYTER_TOKENpigsty --name jupyter quay.io/jupyter/minimal-notebook:latestMakefile 目标速查Makefile 与 README 中的 Alias 章节一一对应完整目标如下目标实际动作make updocker compose up -d拉起容器make dirmkdir -p /data/jupyter; chown -R 1000:100 /data/jupyter建目录并设属主make run依赖dir用docker run直接启动绕过 Composemake view打印访问地址提示make logdocker logs -f jupyter跟随日志make infodocker inspect jupyter \| jq查看容器详情make stopdocker stop jupyter停止容器make cleandocker stop jupyter; docker rm -f jupyter停止并删除容器make purgesudo rm -rf /data/jupyter清理数据目录Makefile 中提供make pulldocker compose pull拉取镜像make rmidocker rmi $(JUPYTER_IMAGE)删除镜像make save将镜像保存为/tmp/docker/jupyter.tgzmake load从/tmp/docker/jupyter.tgz加载镜像其中两个“离线分发”目标对无外网环境尤其有价值make save将镜像压缩归档make load在目标机器上还原从而避开公网拉取。make run与make up的区别在于前者直接使用docker run并携带--init、--restart always、--detach参数且会自动先执行make dir适合希望跳过 Compose 的场景。准备数据目录权限是第一个易错点Jupyter 官方镜像默认以 UID1000运行用户jovyan因此宿主机挂载目录必须匹配该属主否则容器内会因写入权限不足而报错。README 明确要求数据目录/data/jupyter的属主为1000:100make dir # mkdir -p /data/jupyter; chown -R 1000:100 /data/jupytermake dir对应的 Makefile 实现为dir: sudo mkdir -p /data/jupyter; sudo chown -R 1000:100 /data/jupyter由于涉及系统目录写入Makefile 使用了sudo。挂载点/data/jupyter对应容器内/home/jovyan/work你在 Notebook 中创建的文件、上传的数据集都会持久化到该目录——这也是后续安装 Python 包、编写脚本的工作根目录。连接 Pigsty 的 PostgreSQLpsycopg2 实战Jupyter 的价值在于数据分析而 Pigsty 场景下最典型的用法就是直连由 Pigsty 部署、管理的 PostgreSQL 集群。README 给出了两条安装驱动的路线。路线一pip 安装 psycopg2在 Jupyter 的终端Terminal中执行pip install psycopg2-binary psycopg2若网络受限可使用清华 PyPI 镜像pip install -i https://pypi.tuna.tsinghua.edu.cn/simple psycopg2-binary psycopg2也可以直接配置 pip 全局镜像源一劳永逸pip install --upgrade pip pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple路线二conda 配置清华镜像若镜像自带 conda可通过添加 Anaconda 镜像频道加速conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/在 Notebook 中查询 PostgreSQL驱动就绪后即可在 Notebook 单元格中执行import psycopg2 conn psycopg2.connect(postgres://dbuser_dba:DBUser.DBA10.10.10.10:5432/meta) cursor conn.cursor() cursor.execute(SELECT * FROM pg_stat_activity) for i in cursor.fetchall(): print(i)该连接串使用的dbuser_dba/DBUser.DBA正是 Pigsty 默认创建的超级用户与口令见 conf/vibe.yml 中的pg_users与pg_admin_password配置meta是 Pigsty 默认的元数据库。将 SQL 换成任何只读查询、聚合分析或EXPLAIN计划即可把 Jupyter 变成面向 PostgreSQL 的交互式分析工作台。门户集成通过 lab.pigsty 域名访问Jupyter 的访问地址之所以是lab.pigsty是因为 Pigsty 的 Nginx 门户infra_portal为其预留了域名映射。在 conf/demo/saas.yml 中可以找到infra_portal: jupyter : { domain: lab.pigsty ,endpoint: 127.0.0.1:8888, websocket: true }domain: lab.pigsty定义对外域名endpoint: 127.0.0.1:8888指向 Jupyter 在本机的监听端口websocket: true关键——JupyterLab 的终端、内核通信依赖 WebSocket必须启用。对应的 DNS 记录也已在配置中声明同一文件的dns_records列表包含lab.pigsty而 Nginx 侧的路由由 roles/infra/templates/nginx/home.conf 渲染# jupyter lab location /jupyter/ { proxy_pass http://127.0.0.1:{{ jupyter_port|default(8888) }}; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_read_timeout 86400s; proxy_send_timeout 86400s; }这段配置与 code-server 的反代块结构一致显式携带Upgrade/Connection头以支持 WebSocket 长连接并将读写超时拉长到 86400 秒一天避免长时间运行的分析任务被代理中断。jupyter_port默认为8888与.env中的JUPYTER_PORT保持一致。进阶对照Pigsty vibe 角色中的原生 JupyterLab除了 Docker 封装Pigsty 还提供了一条“原生安装”路线vibe角色可直接在管理节点上安装 JupyterLab无需容器。两者可互为对照便于根据环境有无 Docker、是否需要容器隔离做出选择。在 roles/vibe/defaults/main.yml 中相关参数为jupyter_enabled: false # jupyter disabled by default, enable in conf/vibe.yml jupyter_port: 8888 # jupyter lab listen port jupyter_data: /data/jupyter # jupyter lab data directory jupyter_password: Vibe.Coding # jupyter lab access token jupyter_venv: /data/venv # python venv path with jupyter安装逻辑见 roles/vibe/tasks/jupyter.yml先用uv在独立 venv 中安装jupyterlab ipykernel再渲染配置文件并注册 systemd 服务。核心差异在于它通过 Python 配置文件 roles/vibe/templates/jupyter_config.py 控制行为c.ServerApp.port {{ jupyter_port }} c.ServerApp.base_url /jupyter/ c.IdentityProvider.token {{ jupyter_password }}注意base_url /jupyter/与上文 Nginxlocation /jupyter/的路由完全对齐说明该角色同样设计为经门户反代访问。启用方式是在 conf/vibe.yml 中设置jupyter_enabled: true与jupyter_password并可在infra_extra_services中加入 Jupyter 入口使其出现在 Pigsty 首页导航。从 roles/vibe/README.md 看其访问入口为http://host:8888/jupyter/需带令牌。相比之下Docker 方案的优势是镜像内自带完整 Python 生态且隔离干净原生方案则省去容器运行时、资源开销更小。小结在 Pigsty 中部署 Jupyter 是一条“三步走”的轻量路径改.env口令 →make dir准备数据目录 →make up拉起容器。借助make save / load可完成镜像离线搬运借助门户的lab.pigsty域名与 WebSocket 反代可无缝融入既有访问体系而通过 psycopg2 直连 Pigsty 的 PostgreSQL 集群则让 Notebook 真正成为面向数据库的交互式分析环境。若追求更轻量的运行方式vibe角色提供的原生 JupyterLab 安装路线也是值得对照的备选方案。参考文件索引模块入口与使用说明app/jupyter/README.md编排与运维app/jupyter/docker-compose.yml、app/jupyter/Makefile参数配置app/jupyter/.env门户与 DNS 集成conf/demo/saas.yml、roles/infra/templates/nginx/home.conf原生 JupyterLab 对照roles/vibe/defaults/main.yml、roles/vibe/tasks/jupyter.yml、roles/vibe/templates/jupyter_config.py赞分享数据库运维云原生高可用监控【免费下载链接】pigstyEnterprise-Grade OSS PostgreSQL Distribution with HA, PITR, IaC, Monitor, 12 kernel forks and 575 PG extensions. Best-of-breed products integrated as a platform. Self-host Postgres like a Pro!项目地址https://gitcode.com/GitHub_Trending/pi/pigsty点击查看免费下载相关推荐Jupyter Notebook 7 使用指南基于 JupyterLab 与 Jupyter Server 的 Web 交互式计算环境Jupyter Notebook 7 使用指南基于 JupyterLab 与 Jupyter Server 的 Web 交互式计算环境 Jupyter Not后端前端数据科学PredictionIO 与 Jupyter Notebook 交互式开发指南基于 Docker 搭建 EDA 与模板训练全流程PredictionIO 与 Jupyter Notebook 交互式开发指南基于 Docker 搭建 EDA 与模板训练全流程 导读 本篇指南围绕 dock机器学习后端大数据终极Jupyter Notebook安装配置指南3分钟搭建高效Python交互式开发环境终极Jupyter Notebook安装配置指南3分钟搭建高效Python交互式开发环境 Spyder作为一款专为科学计算打造的Python开发环境集成了J开发工具IDE代码编辑器上一篇115网盘下载加速器深度解析高效批量导出实战指南下一篇Augury组件树深度解析可视化你的Angular应用架构创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

ClaudeCode实战:从终端AI Agent到MCP数据工作台完整指南

ClaudeCode实战:从终端AI Agent到MCP数据工作台完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 17:51:55 阅读更多 →
计算机组成原理:流水线冒险的三大类型与处理方法

计算机组成原理:流水线冒险的三大类型与处理方法

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 17:50:55 阅读更多 →
Java面试MySQL索引,这5个问题必问

Java面试MySQL索引,这5个问题必问

问题一:为什么MySQL用B树,不用B树或哈希?哈希索引等值查询快,但范围查询废了,因为哈希值无序。B树每个节点都存数据,树高比B树高,磁盘IO次数多。B树只在叶子节点存数据,非叶子节点只…

2026/10/2 17:50:55 阅读更多 →

最新新闻

基于Python机器学习的加密恶意流量检测平台实战

基于Python机器学习的加密恶意流量检测平台实战

简介:本资源为基于Python机器学习的加密恶意流量分析与检测平台完整项目包,面向计算机、自动化等专业学生及安全方向从业者,可用于毕业设计、课程大作业或期末课程设计,帮助解决加密恶意流量识别与可视化监测问题。压缩包共134个文…

2026/10/2 18:19:10 阅读更多 →
微信小程序AI健康问诊系统:从设计到上线全解析

微信小程序AI健康问诊系统:从设计到上线全解析

挂号排队两小时,问诊三分钟,这是很多人去医院的真实体验。也正是因为这个痛点,我决定做一个“微信小程序的AI健康问诊系统”,把日常健康评估、症状初步分析和健康建议这些事,搬到用户手机里。这篇文章我会把这套个人健…

2026/10/2 18:19:10 阅读更多 →
微信小程序AI健康问诊系统开发实战:从架构到落地的完整方案

微信小程序AI健康问诊系统开发实战:从架构到落地的完整方案

做医疗健康类小程序的朋友应该都有体会:用户一进来就问症状、找建议、要评估,但你一个个人开发者或者小团队,手里既没有医生资源,也没有成熟的知识库,很难凭人力撑起有质量的问答。我自己在做一个“微信小程序的AI健康…

2026/10/2 18:19:10 阅读更多 →
macOS下Git换行符警告CRLF/LF排查与.gitattributes规范化全攻略

macOS下Git换行符警告CRLF/LF排查与.gitattributes规范化全攻略

1. 先看warning到底在说什么:换行符差异的前因后果在 macOS 上跑git add或git commit时,突然冒出一句:warning: CRLF will be replaced by LF in src/main.py. The file will have its original line endings in your working directory.第一…

2026/10/2 18:19:10 阅读更多 →
Unreal引擎开发踩坑实录:渲染、物理与性能问题排查指南

Unreal引擎开发踩坑实录:渲染、物理与性能问题排查指南

在Unreal引擎里摸爬滚打了这几年,从4.22一路用到5.2,大大小小的坑踩了不少。有的问题查了两三天,最后发现就是某个勾选框没开;有的问题看着像是引擎Bug,翻源码才发现是自己资源命名不规范。这篇东西算是我个人的问题处…

2026/10/2 18:19:10 阅读更多 →
DeepSeek Harness实战:用Vibe Coding从零构建待办应用

DeepSeek Harness实战:用Vibe Coding从零构建待办应用

最近在技术群和社区里,看到越来越多朋友开始尝试 AI 辅助编程,也就是常说的 Vibe Coding。工具装了一堆,但很多人卡在同一个地方:不知道除了“让 AI 写一段代码”之外,怎么把这类工具真正嵌入到自己的开发流程里。尤其…

2026/10/2 18:18:10 阅读更多 →

日新闻

从零搭建AI工程化:模型之外的完整闭环

从零搭建AI工程化:模型之外的完整闭环

先搞清楚一件事:从零开始做 AI 工程化,难的从来不是调模型、写提示词,而是把一套原型 Demo 变成长得像是“正经系统”的东西。你手里可能已经有了能跑通的代码,也可能刚读完一些概念,但真到了要把它变成可维护、可观测…

2026/10/2 0:00:20 阅读更多 →
大模型训练显存估计与混合精度训练实战指南

大模型训练显存估计与混合精度训练实战指南

1. 大模型训练显存估计与混合精度训练详解显存不够用,几乎是每个做大模型训练的人都会撞上的第一堵墙。你可能也经历过:模型代码写完了,数据管道跑通了,满心欢喜地按下训练启动脚本,结果几秒钟后终端弹出一行红字——C…

2026/10/2 0:00:20 阅读更多 →
小样本学习数据集选型指南:27个真正可用的高质量数据集

小样本学习数据集选型指南:27个真正可用的高质量数据集

1. 小样本学习的“弹药库”:为什么你总在找数据集,却总找不到真正能用的? 小样本、数据集——这两个词最近半年在我处理的200多个AI项目咨询里,出现频率排进前三。不是模型调不好,不是代码写不对,而是卡在…

2026/10/2 0:00:20 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/1 19:40:48 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/1 19:41:40 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/1 20:05:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 5:26:06 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 6:09:11 阅读更多 →