用 Docker Compose 一键搭建本地 Python 数据分析环境:从零到可复现
刚学 Python 数据分析时,很多人第一步就卡在装环境上:在本机装 Python、装 pandas、装 Jupyter,版本一乱就报错,换一台电脑又要重来一遍。本文介绍的做法是把分析环境装进 Docker 容器,用 Docker Compose 一条命令启动,代码、数据和依赖分开存放,换电脑也能原样复现。
一、为什么要用容器装分析环境
本机直接装依赖最大的问题是互相干扰。不同项目要不同版本的 pandas 或 numpy,升级一个库可能拖垮另一个项目。容器把 Python 解释器和依赖打包在一起,项目之间互不干扰;写好的 compose 文件就是环境说明书,别人拿到就能跑出同样的结果。对新手来说,这比背一堆安装命令更可靠。
二、准备工作
先确认本机装好 Docker 和 Docker Compose,运行 docker --version 和 docker compose version 能看到版本号即可。再新建一个项目文件夹,例如 py-analysis,里面放三样东西:存放代码的 notebooks 文件夹、存放数据的 data 文件夹、以及稍后要写的 docker-compose.yml。数据和代码放在容器外面,用挂载的方式给容器用,这样容器删了数据还在。
三、写 docker-compose.yml
文件内容很简单:选一个官方 Python 3.12 镜像作基础,映射 8888 端口给 Jupyter,把当前目录挂载到容器里的 /work,第一次启动时自动安装依赖。关键是不要把数据写进镜像层,镜像只装工具,数据永远留在挂载目录里。写完后在项目目录执行 docker compose up -d,看到容器启动成功,再执行 docker compose logs 查看 Jupyter 的访问地址和令牌。
四、依赖怎么管
新建 requirements.txt,把 pandas、numpy、matplotlib、jupyterlab 一行一个写进去,版本号先不锁死,等跑通后再用 pip freeze 导出锁定版本。镜像构建时安装一次即可,平时改代码不用重建镜像;只有改了依赖才需要重新构建。国内网络较慢时,可以在构建参数里换成国内镜像源,安装速度会明显提升。
五、日常使用习惯
每天的工作流程固定下来:进入项目目录,docker compose up -d 启动;浏览器打开 Jupyter 开始写分析;写完先在 notebooks 里保存,再用 git 提交代码,data 目录只放原始数据,中间结果单独放 output 目录。这样做的好处是复查时能分清哪一步算出了什么,出了问题也能按文件逐段排查。
六、常见问题
一是端口被占用:8888 已被别的程序占用时,改 compose 里的映射端口即可,例如改成 8899。二是权限问题:容器里新建的文件在本机显示为 root 所有,处理办法是在 compose 中指定当前用户的 UID 和 GID。三是容器启动后马上退出:多数是命令写错或依赖安装失败,先看日志再改配置,不要反复重建镜像。
七、小结
本地数据分析环境的核心要求不是装得快,而是每次都能装出同样的结果。Docker Compose 把环境变成一份可以版本管理的文件,配合挂载目录和依赖锁定,新手也能做到换电脑不翻车。先把这套最小环境跑通,再去学更复杂的数据处理技巧,路会顺得多。
- 点赞
- 收藏
- 关注作者
评论(0)