57 lines
2.6 KiB
Docker
57 lines
2.6 KiB
Docker
# pigo 协作镜像(单 agent 版)
|
||
#
|
||
# 构建(在仓库根目录执行,先本地交叉编译 pigo,再 docker build):
|
||
# $env:GOOS="linux"; $env:CGO_ENABLED="0"
|
||
# go build -trimpath -ldflags="-s -w" -o coop/tmp/pigo-linux-amd64 ./cmd/pigo
|
||
# docker build -f coop/Dockerfile -t pigo-coop .
|
||
# 或直接用 Linux 的 Go 工具链时跳过交叉编译步骤。
|
||
#
|
||
# 运行示例(模型后端由外部调用方通过环境变量传入):
|
||
# docker run --rm \
|
||
# -e MODEL=deepseek-chat \
|
||
# -e BASE_URL=https://api.deepseek.com \
|
||
# -e API_KEY=<your-key> \
|
||
# -e TASK="请为 XX 编写设计文档并实现原型" \
|
||
# -e ROUND_MAX=6 \
|
||
# pigo-coop
|
||
#
|
||
# 协作方式:单个 pigo 进程在工作区 /blackboard/workspace 内完成 task.md 的任务,
|
||
# 用 --resume 保持跨轮连续上下文;完成时通过 blackboard 工具创建 DONE,
|
||
# supervisor 把结果以结构化 JSON(/blackboard/result.json)落盘。
|
||
#
|
||
# 基础镜像复用本机已有的 pigo-worker:latest(Alpine,已含 bash/git/wget/flock/
|
||
# timeout/CA 证书与静态 pigo 二进制),这里仅覆盖 pigo 二进制为新代码(含
|
||
# blackboard 工具)并加入 supervisor 与协作 prompt,避免重新拉取 golang/alpine。
|
||
|
||
FROM pigo-worker:latest
|
||
|
||
# solve/pentest tools: base image only ships busybox (no curl/python3), add them here.
|
||
# pigo-worker 镜像 USER=agent,RUN 层以非 root 执行,apk 无法锁库,先切 root 再恢复。
|
||
USER root
|
||
RUN apk add --no-cache curl wget python3 py3-pip jq openssl
|
||
|
||
# Python 常用库:网络/加密/数据/解析等,覆盖多数协作与 CTF 场景。
|
||
# 使用清华 PyPI 镜像加速国内构建;--no-cache-dir 避免膨胀镜像。
|
||
# --break-system-packages:Alpine 3.20+ 标记 externally-managed,pip 全局安装需显式放行。
|
||
RUN pip3 install --no-cache-dir --break-system-packages \
|
||
-i https://pypi.tuna.tsinghua.edu.cn/simple \
|
||
requests urllib3 certifi idna charset-normalizer \
|
||
cryptography pyOpenSSL paramiko pyjwt \
|
||
PyYAML beautifulsoup4 lxml \
|
||
python-dotenv click tqdm \
|
||
numpy pandas \
|
||
httpx aiohttp websockets dnspython \
|
||
psutil pillow
|
||
|
||
USER agent
|
||
|
||
# 覆盖 pigo 二进制:coop/tmp/pigo-linux-amd64 由本地 Go 交叉编译(GOOS=linux CGO_ENABLED=0)。
|
||
# legacy builder 不支持 COPY --chmod(需 BuildKit)。权限位由主机侧 chmod 提供(构建前先 chmod 755)。
|
||
COPY coop/tmp/pigo-linux-amd64 /usr/local/bin/pigo
|
||
COPY coop/supervisor.sh /usr/local/bin/supervisor.sh
|
||
COPY coop/prompts /prompts
|
||
COPY coop/AGENTS.md /prompts/AGENTS.md
|
||
|
||
WORKDIR /blackboard
|
||
ENTRYPOINT ["/usr/local/bin/supervisor.sh"]
|