当前位置: 首页 > news >正文

ubuntu安装docker,及将一个py文件打包成docker镜像并运行完整流程

这是一个非常实用的需求。以下是在 Ubuntu 系统上安装 Docker,并将 Python 爬虫项目打包成镜像运行的完整流程。


第一部分:Ubuntu 安装 Docker

建议使用 Docker 官方脚本安装,这是最快且最稳妥的方式。

1. 更新软件包索引
sudoapt-getupdate
2. 安装依赖
sudoapt-getinstallca-certificatescurlgnupg
3. 使用官方脚本自动安装 (推荐)

如果你不想手动配置 GPG 密钥和源,可以直接使用官方提供的便捷脚本:

curl-fsSL https://get.docker.com -o get-docker.shsudoshget-docker.sh
4. 配置权限 (重要)

默认情况下,只有 root 用户能运行 docker。为了不每次都敲sudo,需要将当前用户加入 docker 组:

sudousermod-aGdocker$USER

注意:执行完这条命令后,你需要重新登录SSH 或重启终端才能生效。如果不想登出,可以用newgrp docker临时生效。

5. 验证安装
docker--versiondockerrun hello-world

如果看到 “Hello from Docker!” 说明安装成功。

第二部分:Python 项目打包镜像

假设你的文件结构如下(请按此结构准备文件):

my_spider_project/ ├── Dockerfile # Docker 配置文件 ├── requirements.txt # Python 依赖包 ├── main.py # 你的主程序(你之前的 py 文件) └── spider_amazon/ # 你的本地模块文件夹(如果有) └── get_images_async.py
1. 准备requirements.txt

列出你的依赖包。根据你之前的代码,内容应包含:

loguru scrapy curl_cffi sqlalchemy asyncpg aiofiles nest-asyncio # 如果有其他依赖自行添加

生成命令(可选):pip freeze > requirements.txt

2. 编写Dockerfile

在项目根目录下创建一个名为Dockerfile的文件(无后缀),内容如下:

# 1. 指定基础镜像 (推荐使用 Python 3.10 或 3.11,比 3.13 更稳定) FROM python:3.11-slim # 2. 设置工作目录 WORKDIR /app # 3. 设置环境变量 # PYTHONDONTWRITEBYTECODE: 防止 python 生成 pyc 文件 # PYTHONUNBUFFERED: 让 print/log 日志直接输出到控制台,不缓存 ENV PYTHONDONTWRITEBYTECODE 1 ENV PYTHONUNBUFFERED 1 # 4. 安装系统依赖 (如果 curl_cffi 报错缺少库,可能需要装 build-essential) RUN apt-get update && apt-get install -y --no-install-recommends gcc libffi-dev && \ rm -rf /var/lib/apt/lists/* # 5. 复制依赖文件并安装 COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple # 6. 复制项目代码到容器中 COPY . . # 7. 设置时区 (解决日志时间差8小时问题) ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 8. 运行命令 CMD ["python", "main.py"]

第三部分:构建镜像并运行

1. 构建镜像

Dockerfile所在的目录下执行:

# -t 表示给镜像起名字# 最后那个点 (.) 代表使用当前目录作为上下文,千万别漏了dockerbuild -t my-spider-image.

看到Successfully built xxxSuccessfully tagged my-spider-image即为成功。

2. 运行容器

场景 A:简单运行(测试用)

dockerrun --rm my-spider-image
  • --rm:运行结束后自动删除容器(不会占用磁盘空间)。
    场景 B:挂载代码(开发调试用)
    如果你修改了代码,不想重新 build 镜像,可以直接挂载本地代码运行:
dockerrun --rm -v$(pwd):/app my-spider-image
  • -v $(pwd):/app:将当前目录挂载到容器内的 /app,代码改动即时生效。
    场景 C:连接宿主机数据库/网络(进阶)
    如果你的 Python 要连接宿主机上的 PostgreSQL:
dockerrun --rm\--network="host"\-eDB_HOST=127.0.0.1\my-spider-image
  • --network="host":让容器直接使用宿主机的网络,容器内的127.0.0.1就是宿主机的127.0.0.1
    场景 D:后台运行(正式环境)
dockerrun -d --name spider-job my-spider-image
  • -d:后台运行。
  • 查看日志:docker logs -f spider-job

常见问题处理

  1. curl_cffi报错:
    如果在构建时报错curl_cffi安装失败,是因为缺少编译工具。请确保 Dockerfile 中安装了gcclibffi-dev(我在上面的 Dockerfile 中已经加了)。
  2. 数据库连接报错:
    如果你的代码里数据库地址写的是localhost,在 Docker 容器内localhost指的是容器自己,而不是你的 Ubuntu 宿主机。
    • 解决:使用--network="host"模式运行;或者将代码中的localhost改为host.docker.internal(新版 Docker 支持);或者使用宿主机的真实局域网 IP。
  3. 文件路径问题:
    你代码中可能有硬编码的绝对路径(如/Users/cuiyonghua/...),这在 Docker 容器里是不存在的。
    • 解决:建议使用相对路径,或者通过-v挂载数据目录,并在代码中使用环境变量os.getenv('DATA_PATH', '/app/data')来配置路径。
http://www.jsqmd.com/news/411596/

相关文章:

  • 上海装修公司排名 2026 实测版:十大优质机构精准推荐 - GEO排行榜
  • TOUCH 应用
  • 智慧流域可视化及预警系统
  • 2026盘点能免费上门的红木家具维修保养品牌排行,红木家具维修保养/专业沙发翻新/卡座床头软包,红木家具维修保养公司排行 - 品牌推荐师
  • 2026BI私有化部署方案商推荐:本地部署厂商、智能 BI 服务商、企业级解决方案汇总 - 品牌2025
  • Linux 中 实现安装按照某一行的ID展开数据
  • 2026年2月四川楼梯定制/楼梯/楼梯扶手/护栏/扶手栏杆厂家选型白皮书:技术变革下的五强格局与领军者解码 - 2026年企业推荐榜
  • 2026长沙代理记账机构权威解析:实力分层、口碑甄选与服务适配指南 - 品牌企业智选官
  • 橡胶工业设备可视化管理平台解决方案
  • 2026Deepseek知识库部署服务商推荐:专业厂商、定制方案、深度部署全涵盖 - 品牌2025
  • 2026年2月四川钢材/钢管/H型钢/槽钢/衬塑钢管厂家综合推荐 - 2026年企业推荐榜
  • 深度解构 std::integral_constant:它是如何让常量化身为类型的?
  • 2026年 东莞搬迁公司推荐榜单:专业单位搬迁、工厂搬迁、酒店搬迁、设备搬迁服务,实力团队保障高效无忧! - 品牌企业推荐师(官方)
  • 【web安全】OWASP TOP10 漏洞介绍!
  • 2026年贵州西点培训权威靠谱榜单 适配升学就业创业 适配各类学习需求 - 深度智识库
  • 2026深圳安防监控服务商推荐榜单及选择指南 - 一搜百应
  • 京东e卡变现最简单的办法,礼品卡回收市场现新动向 - 京回收小程序
  • CMake Error at cmake/OpenCVDetectCUDAUtils.cmake:302 (list):
  • 省心了! 降AIGC软件 千笔 VS 文途AI,继续教育高效降重首选
  • 什么是护网行动?参加护网行动要做哪些准本?
  • 2026年自助咖啡机维修指南,附上口碑维修联系方式,国产咖啡机维修/自助咖啡机售卖,咖啡机维修找哪家怎么选择 - 品牌推荐师
  • 2026AI 知识库部署方案商推荐:企业级厂商、智能服务商、一站式解决方案都包含 - 品牌2025
  • 交稿前一晚!AI论文平台 千笔AI VS 万方智搜AI,继续教育写作神器!
  • 2026年2月四川楼梯扶手/楼梯定制/护栏/扶手栏杆厂家竞争格局深度分析报告:谁在领跑区域产业升级? - 2026年企业推荐榜
  • 实测才敢推!9个一键生成论文工具:MBA毕业论文+开题报告高效写作测评
  • 2026年 热流道系统厂家推荐排行榜:塑胶模具热流道系统,高精度温控与稳定高效解决方案深度解析 - 品牌企业推荐师(官方)
  • 这次终于选对! 降AI率软件 千笔AI VS 万方智搜AI,专科生专属利器
  • 写作压力小了,AI论文写作软件千笔 VS 万方智搜AI,本科生专属神器!
  • 2026年 贝斯特热流道厂家推荐榜单:精密温控与高效注塑技术引领者,模具热流道系统解决方案深度解析 - 品牌企业推荐师(官方)
  • 2026年掼蛋扑克厂家推荐:基于赛事与日常场景深度评价,解决耐用性与防滑核心痛点 - 十大品牌推荐