Linux 下用 Docker 搭建 Python 开发环境:从零开始的极简指南
刚学 Python 的人常遇到一个麻烦:本机装了多个项目,一个要 Python 3.9,一个要 3.12,依赖版本互相打架;换一台电脑,又得把环境从头配一遍。Docker 能把“环境”本身装进一个可复制的箱子里:镜像走到哪,环境就跟到哪。下面用一个最小的例子,在 Linux 上把 Python 开发环境跑起来。
一、准备工作:装好 Docker
以 Ubuntu 为例,先安装 Docker,然后确认它能正常工作:
sudo snap install docker
docker --version
docker run hello-world
看到 Hello from Docker! 就说明 Docker 已经就绪。把当前用户加入 docker 组之后,日常使用就不用每次都加 sudo:
sudo usermod -aG docker $USER
改完组需要重新登录终端才生效。
二、写一个最小的 Dockerfile
新建一个空目录,放两个文件。先写 requirements.txt,列出依赖:
requests==2.32.3
再写 Dockerfile:
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "main.py"]
这几行各有分工:FROM 选基础镜像,slim 版体积小、启动快;WORKDIR 设定工作目录;COPY 把依赖清单拷进去;RUN 在镜像构建时安装依赖;最后的 CMD 决定容器启动后默认执行的命令。单独把 requirements.txt 先 COPY 进去再安装,是为了利用 Docker 的层缓存——以后只改代码不改依赖时,构建会直接复用已安装的层,速度快很多。
再写一个 main.py 验证:
import requests
print("requests 版本:", requests.__version__)
print("Hello, Docker + Python!")
三、构建镜像并运行
在目录里执行构建:
docker build -t my-python-app .
构建成功后运行:
docker run --rm -it my-python-app
--rm 表示容器退出后自动删除,it 则是交互模式。想在开发时边改代码边验证,可以把代码目录挂载进容器:
docker run --rm -it -v $(pwd):/app my-python-app bash
-v 把宿主机的当前目录映射到容器的 /app,本地改一行代码,容器里立刻就能看到,不用反复构建镜像。进入容器后,python main.py 随改随跑。
四、日常排障的五个命令
容器用久了,最常用的是下面这组命令:
docker ps:查看正在运行的容器。docker ps -a:连已退出的容器一起看。docker logs 容器名:看容器输出的日志,程序闪退先查这里。docker exec -it 容器名 bash:进入一个正在运行的容器里调试。docker images和docker system prune:前者看本地镜像,后者清理用不上的镜像和容器,磁盘紧张时最管用。
五、新手最容易踩的三个坑
第一,别在容器里反复 pip install 却不写进 Dockerfile 和 requirements.txt。容器删了就没了,依赖必须落到文件里,环境才能复现。
第二,记得写 .dockerignore。把 .git、__pycache__、虚拟环境目录排除在构建上下文之外,否则构建又慢又容易把本地垃圾带进镜像。
第三,构建镜像时可以给 pip 配置国内镜像源加速安装,也可以给 pip install 加上 --no-cache-dir,避免缓存文件把镜像体积撑大。
小结
用 Docker 管 Python 环境,核心就三步:写 Dockerfile 把环境“写下来”,docker build 把环境“打成包”,docker run 把环境“跑起来”。环境跟着镜像走,换机器、换系统、给同事同步,都只要同一条命令。熟练这套流程后,还可以再学 Docker Compose,把数据库、缓存这些配套服务也一起编排进来,一套命令拉起整个开发环境。
- 点赞
- 收藏
- 关注作者
评论(0)