Docker部署Python爬虫:从零学会用Docker部署

如果你是刚接触服务器运维的新手,想把自己的Python爬虫放到Docker里运行,这篇文章正好适合你。

我会从零开始,用最简单的步骤讲清楚怎么用Docker部署Python爬虫,全程有命令、有配置、有坑点提醒,你照着做就能跑起来。


前置准备


在动手之前,先确认你的服务器或本地电脑满足以下几个条件:



  • 已经安装Docker。没装的话执行以下命令一键安装(CentOS/Ubuntu通用):


  curl -fsSL https://get.docker.com | bash


  • 有个最简单的Python爬虫脚本。哪怕只爬一个网页标题都行,后面我们会一步步改造它。

  • 确保服务器能正常访问外网(如果是国内服务器,后面会给你换国内镜像源的命令)。


所有操作都在命令行完成,不用装宝塔或面板。


分步操作


第一步:准备项目目录与爬虫文件


在服务器上新建一个文件夹,例如 my-crawler,然后进入该目录:


mkdir my-crawler && cd my-crawler

创建一个最简单的爬虫文件 crawler.py,内容如下:


# crawler.py
import requests
from bs4 import BeautifulSoup

url = "https://httpbin.org/anything" # 一个能正常返回数据的网站
try:
resp = requests.get(url, timeout=5)
soup = BeautifulSoup(resp.text, 'html.parser')
print(f"成功获取页面,状态码:{resp.status_code}")
print(f"页面HTML长度:{len(resp.text)}")
except Exception as e:
print(f"出错了:{e}")


注意:这个脚本用了 requestsbeautifulsoup4,你需要一个依赖清单。

第二步:编写依赖文件 requirements.txt


在同一个目录下创建 requirements.txt,写入:


requests
beautifulsoup4

第三步:编写Dockerfile


创建一个没有后缀的文件 Dockerfile(注意首字母大写),内容如下:


# 基于Python官方轻量镜像
FROM python:3.9-slim

设置工作目录

WORKDIR /app

复制依赖文件并安装

COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

复制爬虫脚本

COPY crawler.py ./

容器启动时执行爬虫

CMD ["python", "crawler.py"]


这里用了清华大学的pip镜像源,国内服务器安装会快很多。如果你在国外服务器,去掉 -i 部分即可。

第四步:构建Docker镜像


执行构建命令,给镜像取个名字(这里叫 my-crawler):


docker build -t my-crawler .

等待几分钟,看到 Successfully tagged my-crawler:latest 说明构建成功。


第五步:运行容器并查看输出


直接用以下命令运行:


docker run --rm my-crawler

参数 --rm 表示容器运行结束后自动删除,避免残留容器。

运行后你应该会看到类似下面的输出:


成功获取页面,状态码:200
页面HTML长度:342

如果你的爬虫脚本需要访问本地文件或数据库,还可以用 -v 挂载目录,比如:


docker run --rm -v /宿主机路径:/app/output my-crawler

避坑指南


常见报错1:pip install 超时或失败



  • 原因:默认pip源在国外,国内服务器下载慢。

  • 解决:在Dockerfile里加上国内镜像源,比如清华、阿里、中科大。上面已经示范了。


常见报错2:容器内无法访问外网



  • 原因:Docker默认使用桥接网络,有时候DNS解析有问题。

  • 解决:运行容器时添加 --dns 8.8.8.8--network host 共享宿主机网络。


常见报错3:docker build 时找不到文件



  • 原因:Dockerfile 里的 COPY 路径不对,或者当前目录下没有对应文件。

  • 解决:执行 ls 确认 crawler.pyrequirements.txt 存在,并且和 Dockerfile 在同一目录。


高频问题解答


Q1:容器运行后为什么看不到任何输出?


A:可能是因为你没有加 --rm-it

如果想实时看输出,可以用 docker run -it --rm my-crawler

或者等容器停止后,用 docker logs 容器ID 查看。


Q2:爬虫的结果怎么保存到宿主机上?


A:在 Dockerfile 里让爬虫把结果写到 /app/output 目录,然后运行容器时用 -v 将宿主机目录挂载进去。

例如:docker run --rm -v /data/result:/app/output my-crawler


Q3:每次修改爬虫都要重新构建镜像吗?


A:不是必须。

你可以改完 crawler.py 后,重新执行 docker build 构建新镜像,然后运行新容器。

但更高效的做法是把爬虫代码放在宿主机,通过 -v 挂载进去,这样无需重建镜像。


效果验证


按照上面的步骤操作完成后,用以下两个方法确认你的Docker部署Python爬虫正常工作:



  1. 查看容器运行日志。如果有输出“成功获取页面”说明爬虫正常执行。

  2. 检查挂载目录(如果你做了数据持久化),确认结果文件已经生成。


如果想测试更复杂的爬虫(比如定时运行),

可以结合 cronsystemd timer 来定期执行 docker run

或者用 docker-composerestart=always 保持容器长期运行。


如果你在处理Docker部署Python爬虫时遇到其他问题,建议先回看上面的避坑部分,再结合错误提示排查。

记住,把环境问题想清楚再动手,能省一半的时间

分享到:
上一篇
零基础也能做:WP后台美化定制全流程指南
下一篇
服务器搭建私有DNS:手把手实战:在服务器上搭建私有DNS服
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意