保姆级教程|pdu.py单文件命令行工具:Docker镜像构建、公网推送、用户落地使用全流程(适配国内网络)
2026/7/8 3:38:22 网站建设 项目流程

前置说明(必看!适配你当前网络环境)

根据实测国内网络环境:

  1. GitHub网页正常访问、GHCR容器仓库支持国内加速,优先选用GHCR存放镜像;
  2. Docker Hub官网无法访问(境外网页拦截),不推荐使用Docker Hub推送镜像;
  3. ❌ 清华PyPI源网页解析失败,安装Python依赖禁止使用清华源
  4. ✅ 国内可用镜像加速器:https://docker.1ms.runhttps://docker.m.daocloud.io
    • 重点说明:两个加速器网页打不开属于正常现象,网页解析失败不影响Docker后台加速功能,配置到配置文件即可正常加速GHCR、DockerHub镜像;
    • DaoCloud官方源,专门适配GHCR镜像加速,全程免费稳定;
  5. 全文全程避开打不开的境外网站,所有命令、配置复制即用,零基础运维/开发直接照搬,无跳步。

一、项目背景&适用人群

很多开发者本地写完pdu.py PDU机柜电源控制单文件命令行脚本后,分发遇到大量问题:

  • 其他服务器缺少对应Python版本;
  • 第三方依赖安装失败、环境冲突;
  • Windows/Linux跨系统运行报错;
  • 同事部署步骤繁琐,上手门槛高。

Docker可以把脚本+Python运行环境+全部依赖打包成一个镜像,实现:开发者一次构建,用户一条命令直接运行,零环境配置

本文全程零跳过、全细节、报错兜底、国内网络适配,小白也能100%落地。


二、前置环境准备(逐条核对,缺一不可)

2.1 服务器基础环境

  1. Linux服务器(CentOS7/8、Ubuntu20.04/22.04 均可);
  2. Docker 版本 ≥ 20.10(主流稳定版);
  3. 服务器可以正常联网,能访问GitHub官网;
  4. 提前准备好你的业务脚本:pdu.py(单文件命令行工具)。

2.2 必备账号

仅需一个GitHub账号(无需Docker Hub账号,Docker Hub国内打不开直接放弃)

2.3 目录规划(严格按照我这个目录创建,避免报错)

# 1. 创建项目文件夹mkdir-p/root/workspace/pdu-tool# 2. 进入工作目录(后续所有命令都要在这个目录执行!重点!)cd/root/workspace/pdu-tool# 3. 上传你的业务脚本 pdu.py 到这个文件夹内# 执行ls能看到 pdu.py 即为目录配置成功ls

三、第一步:配置Docker国内镜像加速器(解决构建/拉取超时)

这是国内用户最关键一步!不配置会出现镜像拉取超时、构建卡住、ghcr.io推送超时;适配你可用的两大国内加速源。

3.1 编辑加速器配置文件

vim/etc/docker/daemon.json

粘贴内容:

{"registry-mirrors":["https://docker.1ms.run","https://docker.m.daocloud.io"],"log-driver":"json-file","log-opts":{"max-size":"10m","max-file":"3"}}

3.2 生效配置

systemctl daemon-reload systemctl restartdocker

3.3 验证加速器是否生效

dockerinfo

页面底部看到两个加速地址,代表配置100%成功;网页无法访问两个加速链接不代表配置失效


四、第二步:编写Dockerfile镜像构建文件(单文件Python脚本专用)

cd/root/workspace/pdu-toolvimDockerfile

场景1:pdu.py 无第三方依赖(首选)

FROM python:3.9-slim WORKDIR /app COPY pdu.py . RUN chmod +x ./pdu.py ENTRYPOINT ["python", "pdu.py"]

场景2:pdu.py 需要第三方python库

先新建requirements.txt写入依赖包,Dockerfile内容:

FROM python:3.9-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY pdu.py . RUN chmod +x ./pdu.py ENTRYPOINT ["python", "pdu.py"]

可选优化:创建.dockerignore

vim.dockerignore
__pycache__ *.pyc *.log .git .gitignore .env tmp/

五、第三步:本地构建Docker镜像 + 本地测试

5.1 构建镜像

dockerbuild-tpdu-tool:v1.0.

⚠️ 末尾小数点不能丢!

5.2 查看本地镜像

dockerimages|greppdu-tool

5.3 本地功能测试

# 查看帮助dockerrun--rmpdu-tool:v1.0--help# 业务测试示例dockerrun--rmpdu-tool:v1.0-i192.168.1.100-con

--rm:运行完成自动清理容器,不残留垃圾。


六、第四步:GHCR(ghcr.io)镜像仓库推送(国内最优方案)

6.1 GitHub网页生成PAT令牌步骤

  1. 打开GitHub官网,右上角头像 → Settings
  2. 滑到页面底部 → Developer settings
  3. Personal access tokens → Tokens(classic)
  4. Generate new token (classic)
  5. 参数配置:
    • Note:docker-ghcr-push-pdu-tool
    • Expiration:No expiration(永久)
    • 权限仅勾选write:packages
  6. 页面底部Generate token,立即复制生成的密钥,丢失无法找回

6.2 终端登录GHCR

替换yourgithubusernameyourtoken

dockerlogin ghcr.io-uyourgithubusername-pyourtoken

输出Login Succeeded即成功。

6.3 镜像打规范标签

dockertag pdu-tool:v1.0 ghcr.io/yourgithubusername/pdu-tool:latestdockertag pdu-tool:v1.0 ghcr.io/yourgithubusername/pdu-tool:v1.0

6.4 推送镜像

dockerpush ghcr.io/yourgithubusername/pdu-tool:latestdockerpush ghcr.io/yourgithubusername/pdu-tool:v1.0

6.5 设置镜像仓库公开(必做)

  1. GitHub头像 → Your profile → Packages
  2. 打开pdu-tool包详情页 → Package settings
  3. 下滑Danger Zone → Change visibility → 选择Public保存

6.6 跨机器拉取验证

dockerrun--rmghcr.io/yourgithubusername/pdu-tool:v1.0--help

七、用户使用文档(直接复制到README)

PDU-Tool 容器化使用文档

无需安装Python与依赖,Docker一键运行,国内GHCR镜像高速访问。
前置:服务器安装Docker并配置国内镜像加速器

1. 快速执行

# 查看帮助dockerrun--rmghcr.io/yourgithubusername/pdu-tool:latest--help# PDU开机dockerrun--rmghcr.io/yourgithubusername/pdu-tool:latest-i192.168.1.100-con# PDU关机dockerrun--rmghcr.io/yourgithubusername/pdu-tool:latest-i192.168.1.100-coff

2. 挂载本地配置文件

dockerrun--rm-v$(pwd)/config.yaml:/app/config.yaml ghcr.io/yourgithubusername/pdu-tool:latest

3. 环境变量传递账号密码

dockerrun--rm\-ePDU_ADMIN_USER=admin\-ePDU_ADMIN_PASS=Admin@123\ghcr.io/yourgithubusername/pdu-tool:latest-i192.168.1.100-con

4. 容器内交互式调试

dockerrun-it--rmghcr.io/yourgithubusername/pdu-tool:latest /bin/bash

5. Docker Compose部署

新建docker-compose.yml

version:'3.8'services:pdu-tool:image:ghcr.io/yourgithubusername/pdu-tool:v1.0container_name:pdu-control-serviceenvironment:-PDU_USER=admin-PDU_PASS=123456command:["-i","192.168.1.100","-c","on"]restart:"no"

启动命令:

dockercompose up-d

八、常见报错汇总

  1. ghcr.io推送超时:检查daemon.json加速器,重启Docker
  2. 401登录失败:用户名错误、PAT复制不全、未勾选write:packages权限
  3. 403拉取失败:镜像包未设置为Public
  4. pip安装超时:使用官方源,不要配置清华源
  5. Permission denied:Dockerfile缺少chmod授权,重新构建
  6. Docker Hub无法访问:正常,全程只用GHCR

九、生产环境最佳实践

  1. 生产环境禁止使用latest标签,固定语义化版本v1.0
  2. 定期清理构建缓存:docker builder prune
  3. 账号密码使用环境变量传入,不写入镜像/配置文件
  4. 脚本更新后重新build、打tag、推送新版本

十、完整流程链路

编写pdu.py → 配置Docker加速器 → 编写Dockerfile构建镜像 → 本地测试验证 → GitHub生成PAT → 登录GHCR打标签推送 → 设置仓库公开 → 发布README文档 → 用户docker run直接使用

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询