用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/gujiachun-rainbow/RainClaw --skill docker-build-push命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | docker-build-push |
| description | Podman 镜像构建与推送。包含 Dockerfile 编写、本地构建测试、推送到阿里云 ACR 个人版仓库。当用户需要制作 Dockerfile、打包镜像、推送镜像时使用此技能。 |
Windows(PowerShell):
podman --version
# 输出示例:podman version 4.9.0
macOS/Linux(终端):
podman --version
# 输出示例:podman version 4.9.0
如果命令返回版本信息,说明已安装;如果提示 podman : 无法将“podman”项识别为 cmdlet 或 command not found,则需要安装。
Windows 系统:
winget install RedHat.Podman
macOS 系统:
brew install podman
Linux 系统(以 CentOS/RHEL 为例):
sudo dnf install podman
⚠️ Podman 安装完成后,需要重启终端或重新登录会话使环境变量生效。
| 类型 | 推荐镜像 |
|---|---|
| Python | crpi-st7s4gabmi4ym1qo.cn-shanghai.personal.cr.aliyuncs.com/rainclaw/python:3.12.13-slim-trixie |
| Node.js | crpi-st7s4gabmi4ym1qo.cn-shanghai.personal.cr.aliyuncs.com/rainclaw/node:22.22.2-trixie-slim |
| Nginx | crpi-st7s4gabmi4ym1qo.cn-shanghai.personal.cr.aliyuncs.com/rainclaw/nginx:stable-alpine |
一个镜像、一个容器、一个命令,前后端打包在一起。
FROM crpi-st7s4gabmi4ym1qo.cn-shanghai.personal.cr.aliyuncs.com/rainclaw/python:3.12.13-slim-trixie
# 避免中文输出乱码
ENV PYTHONIOENCODING=utf-8
ENV PYTHONUNBUFFERED=1
WORKDIR /app
# 先装依赖(利用缓存层)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制后端代码
COPY backend/ ./backend/
# 复制前端文件(原生HTML或打包后的dist)
COPY frontend/dist/ ./dist/
EXPOSE 8000
CMD ["uvicorn", "backend.main:app", "--host", "0.0.0.0", "--port", "8000"]
fastapi
uvicorn
python-multipart
pandas
openpyxl
根据实际项目删减,
pandas/openpyxl仅 Excel 导入时需要。
方式A:原生 HTML/CSS/JS(无框架)
frontend/ 目录,Dockerfile 里 COPY frontend/ ./frontend/FileResponse 按上述方式逐个返回方式B:Vue/React(Vite 打包)
cd frontend && npm install && npm run build
# 生成 frontend/dist/
COPY frontend/dist/ ./dist/# 构建镜像
podman build -t myapp:latest .
# 本地运行测试
podman run -d --name myapp -p 8000:8000 myapp:latest
# 查看日志(确认启动无报错)
podman logs myapp
# 测试 API
curl.exe http://localhost:8000/api/products
# 清理
podman rm -f myapp
crpi-xxxxxx.cn-shanghai.personal.cr.aliyuncs.com)web-soft)ecommerce-admin)⚠️ 仓库不会自动创建,推送前必须先在控制台建好,否则报
insufficient_scope。
阿里云 ACR 登录密码不是阿里云账号密码,是在 ACR 控制台设置的独立访问密码。
podman login --username=<用户名> --password=<密码> <ACR实例地址>
⚠️ PowerShell 中
--password-stdin+echo "xxx" |不生效,直接用--password=参数最简单。
# 打标签(默认推荐 latest)
podman tag myapp:latest <ACR实例地址>/<命名空间>/<仓库名>:latest
# 推送
podman push <ACR实例地址>/<命名空间>/<仓库名>:latest
💡 生产环境推荐使用语义化版本(如
v1.0.0)替代latest,便于回滚。
ACR实例地址: crpi-st7s4gabmi4ym1qo.cn-shanghai.personal.cr.aliyuncs.com
命名空间: web-soft
ModuleNotFoundError症状:
ModuleNotFoundError: No module named 'database'
修复: 请参考 simple-web-dev-guide 技能中的"模块导入路径"规范,使用 from backend.xxx import 格式。
insufficient_scope: authorization failed仓库不存在。去 ACR 控制台创建命名空间 + 仓库后再推送。
unauthorized: authentication required用户名或密码错误。ACR 密码是独立访问密码,不是阿里云账号密码。
&& 报错PowerShell 5.x 不支持 &&。用 pwsh(PowerShell 7+)或分步执行。
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
或用 Python 脚本处理,避免直接在终端输出中文。
No such imagepodman images 确认本地镜像名,用引号包裹含特殊字符的完整路径。
podman --version)WORKDIR /app(不是 /app/backend)CMD 用 uvicorn backend.main:app(模块路径格式)main.py 所有 from xxx import 已改为 from backend.xxx importpodman build 成功podman run + podman logs 确认启动无报错curl.exe localhost:8000 API 返回正常podman login 成功podman push 成功基于 SOC 职业分类