logo
ghcr.io/promptfoo/promptfoo:0.121.17
linux/amd64 ghcr.io HAO灏 贡献

promptfoo镜像是一个用于测试和评估AI提示词的工具,支持对不同提示词、模型及参数进行比较,帮助开发者优化提示词效果,确保输出的一致性与质量。

9
浏览次数
6.54GB
镜像大小
源镜像
ghcr.io/promptfoo/promptfoo:0.121.17
国内镜像
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo:0.121.17
镜像ID
sha256:a41cf23d79cd57628a70a83d320dc26f93d708b99ac9616ae68a8b78e504c435
镜像 TAG
0.121.17
镜像大小
6.54GB
平台架构
linux/amd64
镜像源
ghcr.io
CMD
node dist/src/server/index.js
启动入口
docker-entrypoint.sh
工作目录
/app
OS/平台
linux/amd64
镜像创建
2026-06-16T17:28:18.929978008Z
同步时间
2026-06-29 15:36
浏览量
9 次
贡献者
avatar HAO灏
🔌 开放端口 1
3000/tcp
⚙️ 环境变量 6
KeyValue
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 0
NODE_VERSION=24.16.0 1
YARN_VERSION=1.22.22 2
API_PORT=3000 3
HOST=0.0.0.0 4
PROMPTFOO_SELF_HOSTED=1 5
🏷️ 镜像标签 8
KeyValue
2026-06-16T17:23:51.101Z org.opencontainers.image.created
Test your prompts, agents, and RAGs. Red teaming/pentesting/vulnerability scanning for AI. Compare performance of GPT, Claude, Gemini, DeepSeek, and more. Simple declarative configs with command line and CI/CD integration. Used by OpenAI and Anthropic. org.opencontainers.image.description
MIT org.opencontainers.image.licenses
8be17c32d44b17f4ddbd618fcaca87769e674abc org.opencontainers.image.revision
https://github.com/promptfoo/promptfoo org.opencontainers.image.source
promptfoo org.opencontainers.image.title
https://github.com/promptfoo/promptfoo org.opencontainers.image.url
main org.opencontainers.image.version
🛡️ 镜像安全扫描
alpine 3.24.1 Trivy 2026-06-29 15:37 查看完整报告
8
低危 LOW
27
中危 MEDIUM
11
高危 HIGH
1
严重 CRITICAL
受影响目标 (3)
ghcr.io/promptfoo/promptfoo:0.121.17 (alpine 3.24.1) alpine Node.js node-pkg /app/dist/src/app/assets/index-Cc0-UlCt.js

Docker拉取命令

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo:0.121.17
docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo:0.121.17  ghcr.io/promptfoo/promptfoo:0.121.17

Containerd拉取命令

ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo:0.121.17
ctr images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo:0.121.17  ghcr.io/promptfoo/promptfoo:0.121.17

Shell快速替换命令

sed -i 's#ghcr.io/promptfoo/promptfoo:0.121.17#swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo:0.121.17#' deployment.yaml

Ansible快速分发-Docker

#ansible k8s -m shell -a 'docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo:0.121.17 && docker tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo:0.121.17  ghcr.io/promptfoo/promptfoo:0.121.17'

Ansible快速分发-Containerd

#ansible k8s -m shell -a 'ctr images pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo:0.121.17 && ctr images tag  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo:0.121.17  ghcr.io/promptfoo/promptfoo:0.121.17'

镜像构建历史


# 2026-06-17 01:28:18  0.00B 设置默认要执行的命令
CMD ["node" "dist/src/server/index.js"]
                        
# 2026-06-17 01:28:18  0.00B 指定检查容器健康状态的命令
HEALTHCHECK {Test:[CMD-SHELL node -e "const http = require('node:http'); const req = http.get('http://127.0.0.1:3000/health', (res) => process.exit(res.statusCode >= 200 && res.statusCode < 400 ? 0 : 1)); req.on('error', () => process.exit(1)); req.setTimeout(5000, () => { req.destroy(); process.exit(1); });"] Interval:30s Timeout:10s StartPeriod:5s StartInterval:0s Retries:0}
                        
# 2026-06-17 01:28:18  0.00B 声明容器运行时监听的端口
EXPOSE [3000/tcp]
                        
# 2026-06-17 01:28:18  0.00B 指定运行容器时使用的用户
USER promptfoo
                        
# 2026-06-17 01:28:18  0.00B 设置环境变量 PROMPTFOO_SELF_HOSTED
ENV PROMPTFOO_SELF_HOSTED=1
                        
# 2026-06-17 01:28:18  0.00B 设置环境变量 HOST
ENV HOST=0.0.0.0
                        
# 2026-06-17 01:28:18  0.00B 设置环境变量 API_PORT
ENV API_PORT=3000
                        
# 2026-06-17 01:28:18  3.52GB 执行命令并创建新的镜像层
RUN |1 PYTHON_VERSION= /bin/sh -c npm link promptfoo &&     chown promptfoo:promptfoo /app/node_modules/promptfoo &&     mkdir -p /home/promptfoo/.promptfoo && chown promptfoo:promptfoo /home/promptfoo/.promptfoo # buildkit
                        
# 2026-06-17 01:27:11  77.23MB 复制新文件或目录到容器中
COPY --chown=promptfoo:promptfoo /app/dist ./dist # buildkit
                        
# 2026-06-17 01:27:09  2.71GB 复制新文件或目录到容器中
COPY --chown=promptfoo:promptfoo /app/node_modules ./node_modules # buildkit
                        
# 2026-06-17 00:17:13  0.00B 设置工作目录为/app
WORKDIR /app
                        
# 2026-06-17 00:17:13  64.30MB 执行命令并创建新的镜像层
RUN |1 PYTHON_VERSION= /bin/sh -c apk add --no-cache "python3${PYTHON_VERSION:+~=${PYTHON_VERSION}}" py3-pip py3-setuptools curl &&     ln -sf python3 /usr/bin/python # buildkit
                        
# 2026-06-17 00:17:13  0.00B 定义构建参数
ARG PYTHON_VERSION=
                        
# 2026-06-16 23:51:46  3.23KB 执行命令并创建新的镜像层
RUN /bin/sh -c addgroup -S promptfoo && adduser -S promptfoo -G promptfoo # buildkit
                        
# 2026-06-16 23:51:46  23.84KB 执行命令并创建新的镜像层
RUN /bin/sh -c apk upgrade --no-cache # buildkit
                        
# 2026-06-16 08:20:00  0.00B 设置默认要执行的命令
CMD ["node"]
                        
# 2026-06-16 08:20:00  0.00B 配置容器启动时运行的命令
ENTRYPOINT ["docker-entrypoint.sh"]
                        
# 2026-06-16 08:20:00  388.00B 复制新文件或目录到容器中
COPY docker-entrypoint.sh /usr/local/bin/ # buildkit
                        
# 2026-06-16 08:20:00  5.36MB 执行命令并创建新的镜像层
RUN /bin/sh -c apk add --no-cache --virtual .build-deps-yarn curl gnupg tar   && export GNUPGHOME="$(mktemp -d)"   && for key in     6A010C5166006599AA17F08146C2130DFD2497F5   ; do     { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ||     { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ;   done   && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz"   && curl -fsSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc"   && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz   && gpgconf --kill all   && rm -rf "$GNUPGHOME"   && mkdir -p /opt   && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/   && ln -s /opt/yarn-v$YARN_VERSION/bin/yarn /usr/local/bin/yarn   && ln -s /opt/yarn-v$YARN_VERSION/bin/yarnpkg /usr/local/bin/yarnpkg   && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz   && apk del .build-deps-yarn   && yarn --version   && rm -rf /tmp/* # buildkit
                        
# 2026-06-16 08:19:56  0.00B 设置环境变量 YARN_VERSION
ENV YARN_VERSION=1.22.22
                        
# 2026-06-16 08:19:56  149.91MB 执行命令并创建新的镜像层
RUN /bin/sh -c addgroup -g 1000 node     && adduser -u 1000 -G node -s /bin/sh -D node     && apk add --no-cache         libstdc++     && apk add --no-cache --virtual .build-deps         curl     && ARCH= OPENSSL_ARCH='linux*' && alpineArch="$(apk --print-arch)"       && case "${alpineArch##*-}" in         x86_64) ARCH='x64' CHECKSUM="761e8070a0943a6cf28ec83df3412630c3cb3d5cbccba32fbae942756b81552f" OPENSSL_ARCH=linux-x86_64;;         x86) OPENSSL_ARCH=linux-elf;;         aarch64) OPENSSL_ARCH=linux-aarch64;;         arm*) OPENSSL_ARCH=linux-armv4;;         ppc64le) OPENSSL_ARCH=linux-ppc64le;;         s390x) OPENSSL_ARCH=linux-s390x;;         *) ;;       esac   && if [ -n "${CHECKSUM}" ]; then     set -eu;     curl -fsSLO --compressed "https://unofficial-builds.nodejs.org/download/release/v$NODE_VERSION/node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz";     echo "$CHECKSUM  node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" | sha256sum -c -       && tar -xJf "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz" -C /usr/local --strip-components=1 --no-same-owner       && ln -s /usr/local/bin/node /usr/local/bin/nodejs;   else     echo "Building from source"     && apk add --no-cache --virtual .build-deps-full         binutils-gold         g++         gcc         gnupg         libgcc         linux-headers         make         python3         py-setuptools     && export GNUPGHOME="$(mktemp -d)"     && for key in       5BE8A3F6C8A5C01D106C0AD820B1A390B168D356       DD792F5973C6DE52C432CBDAC77ABFA00DDBF2B7       CC68F5A3106FF448322E48ED27F5E38D5B0A215F       8FCCA13FEF1D0C2E91008E09770F7A9A5AE15600       890C08DB8579162FEE0DF9DB8BEAB4DFCF555EF4       C82FA3AE1CBEDC6BE46B9360C43CEC45C17AB93C       108F52B48DB57BB0CC439B2997B01419BD92F80A       A363A499291CBBC940DD62E41F10027AF002F8B0     ; do       { gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ||       { gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key" && gpg --batch --fingerprint "$key"; } ;     done     && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION.tar.xz"     && curl -fsSLO --compressed "https://nodejs.org/dist/v$NODE_VERSION/SHASUMS256.txt.asc"     && gpg --batch --decrypt --output SHASUMS256.txt SHASUMS256.txt.asc     && gpgconf --kill all     && rm -rf "$GNUPGHOME"     && grep " node-v$NODE_VERSION.tar.xz\$" SHASUMS256.txt | sha256sum -c -     && tar -xf "node-v$NODE_VERSION.tar.xz"     && cd "node-v$NODE_VERSION"     && ./configure     && make -j$(getconf _NPROCESSORS_ONLN) V=     && make install     && apk del .build-deps-full     && cd ..     && rm -Rf "node-v$NODE_VERSION"     && rm "node-v$NODE_VERSION.tar.xz" SHASUMS256.txt.asc SHASUMS256.txt;   fi   && rm -f "node-v$NODE_VERSION-linux-$ARCH-musl.tar.xz"   && find /usr/local/include/node/openssl/archs -mindepth 1 -maxdepth 1 ! -name "$OPENSSL_ARCH" -exec rm -rf {} \;   && apk del .build-deps   && node --version   && npm --version   && rm -rf /tmp/* # buildkit
                        
# 2026-06-16 08:19:56  0.00B 设置环境变量 NODE_VERSION
ENV NODE_VERSION=24.16.0
                        
# 2026-06-16 08:01:29  0.00B 设置默认要执行的命令
CMD ["/bin/sh"]
                        
# 2026-06-16 08:01:29  8.42MB 复制文件或目录到容器中
ADD alpine-minirootfs-3.24.1-x86_64.tar.gz / # buildkit
                        
                    

镜像信息

{
    "Id": "sha256:a41cf23d79cd57628a70a83d320dc26f93d708b99ac9616ae68a8b78e504c435",
    "RepoTags": [
        "ghcr.io/promptfoo/promptfoo:0.121.17",
        "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo:0.121.17"
    ],
    "RepoDigests": [
        "ghcr.io/promptfoo/promptfoo@sha256:30cf22fb78cc3dde3dea9fe2b6a65f37f2d29a772a721beb037845973555d0eb",
        "swr.cn-north-4.myhuaweicloud.com/ddn-k8s/ghcr.io/promptfoo/promptfoo@sha256:00d943af42afebc895240971e19549407117a48c5e343896fdb07ed99910a495"
    ],
    "Parent": "",
    "Comment": "buildkit.dockerfile.v0",
    "Created": "2026-06-16T17:28:18.929978008Z",
    "Container": "",
    "ContainerConfig": null,
    "DockerVersion": "",
    "Author": "",
    "Config": {
        "Hostname": "",
        "Domainname": "",
        "User": "promptfoo",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "ExposedPorts": {
            "3000/tcp": {}
        },
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "NODE_VERSION=24.16.0",
            "YARN_VERSION=1.22.22",
            "API_PORT=3000",
            "HOST=0.0.0.0",
            "PROMPTFOO_SELF_HOSTED=1"
        ],
        "Cmd": [
            "node",
            "dist/src/server/index.js"
        ],
        "Healthcheck": {
            "Test": [
                "CMD-SHELL",
                "node -e \"const http = require('node:http'); const req = http.get('http://127.0.0.1:3000/health', (res) =\u003e process.exit(res.statusCode \u003e= 200 \u0026\u0026 res.statusCode \u003c 400 ? 0 : 1)); req.on('error', () =\u003e process.exit(1)); req.setTimeout(5000, () =\u003e { req.destroy(); process.exit(1); });\""
            ],
            "Interval": 30000000000,
            "Timeout": 10000000000,
            "StartPeriod": 5000000000
        },
        "ArgsEscaped": true,
        "Image": "",
        "Volumes": null,
        "WorkingDir": "/app",
        "Entrypoint": [
            "docker-entrypoint.sh"
        ],
        "OnBuild": null,
        "Labels": {
            "org.opencontainers.image.created": "2026-06-16T17:23:51.101Z",
            "org.opencontainers.image.description": "Test your prompts, agents, and RAGs. Red teaming/pentesting/vulnerability scanning for AI. Compare performance of GPT, Claude, Gemini, DeepSeek, and more. Simple declarative configs with command line and CI/CD integration.  Used by OpenAI and Anthropic.",
            "org.opencontainers.image.licenses": "MIT",
            "org.opencontainers.image.revision": "8be17c32d44b17f4ddbd618fcaca87769e674abc",
            "org.opencontainers.image.source": "https://github.com/promptfoo/promptfoo",
            "org.opencontainers.image.title": "promptfoo",
            "org.opencontainers.image.url": "https://github.com/promptfoo/promptfoo",
            "org.opencontainers.image.version": "main"
        }
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Size": 6544426873,
    "GraphDriver": {
        "Data": {
            "LowerDir": "/var/lib/docker/overlay2/7ba52575d06b2c4d5b18e06cc751821de58e200adfd0905b4a56a184341951ef/diff:/var/lib/docker/overlay2/0d039d64ed0419f411fe1d6d3ff170a38aaf5f8a44c002260b4849b510e27b51/diff:/var/lib/docker/overlay2/42f115d96955100e9e9844f1d5d318c7cd00bb097718a37eabc8a93b284b19d2/diff:/var/lib/docker/overlay2/b71596184400167efe329c778b9f2cf40703f964790c9ebb02e6f62c754ee4ac/diff:/var/lib/docker/overlay2/db222a0d21f81f178b2e853bd2822f55cd2e062abdfbc63b14f4a72fe7e47573/diff:/var/lib/docker/overlay2/d34cb5ad4e4c89fa60929f736712a5b743f7dac424fa3c8308432282e90ee43d/diff:/var/lib/docker/overlay2/8fb555b608957dd054d6d5f66a528109783e503cd91b0fd3e06052593dbbe5d8/diff:/var/lib/docker/overlay2/c23b826d538e0867934466628b98a69cec7b495801c6e83da5b6f899046c5d60/diff:/var/lib/docker/overlay2/de647d7b54c1500c551436d9fe079cc2c892182176b207a79d386902fcd53f40/diff:/var/lib/docker/overlay2/11524a671b133f199bded2c6a8962e73b3f7140dba5a8aeac21a92d451bbd2c1/diff",
            "MergedDir": "/var/lib/docker/overlay2/088cc4a48edb999c608b656d2a0f61c43bfcd45e9a1343fa0167ae33907edfc1/merged",
            "UpperDir": "/var/lib/docker/overlay2/088cc4a48edb999c608b656d2a0f61c43bfcd45e9a1343fa0167ae33907edfc1/diff",
            "WorkDir": "/var/lib/docker/overlay2/088cc4a48edb999c608b656d2a0f61c43bfcd45e9a1343fa0167ae33907edfc1/work"
        },
        "Name": "overlay2"
    },
    "RootFS": {
        "Type": "layers",
        "Layers": [
            "sha256:34884abbe92863fce933ed7c39c0e045631af0ed86d5cc0dfbdf9fdca426ce3c",
            "sha256:6966e360c462d50cda6c02920293f497cf6c749d0a3149307c9088a33530860f",
            "sha256:6c34518cd3a25d892b7499ffc6d3a41784031b78504017017bd274940cee1b74",
            "sha256:428ef54c201c2816bd771a609cc8c7b8eba0a8ac3b21a573613a6a41ec070a9a",
            "sha256:962d8a9ed13b686218d7b49511caf8d60e241c763d3f1d8972f3f9c00198add0",
            "sha256:a8e136b1acba514d74a8fad47532d5c52f4db18fc981a3363f8020eb21fa2751",
            "sha256:f21060af0b5a49494b224c515c01724209142c239e857260e5ccbb5679637153",
            "sha256:88b06898a2af8de9dc5be2c3dce35e2e76d938f5ea9ac734c6c7fca664c74cff",
            "sha256:9b7d70205f1737fb6af23ad4e6697adb8d14121331c5297e264eab46d65e9656",
            "sha256:710a457d96b6e0d53cd841dbe1a9aabf73c91745b889bfdc3f179c9435024a0f",
            "sha256:c1679e4ccfef8459796486f93407113f7d9447c90002a606aded9781091e6658"
        ]
    },
    "Metadata": {
        "LastTagTime": "2026-06-29T15:30:27.011163521+08:00"
    }
}

更多版本

ghcr.io/promptfoo/promptfoo:0.121.13

linux/amd64 ghcr.io6.50GB2026-06-02 11:38
71

ghcr.io/promptfoo/promptfoo:0.121.17

linux/amd64 ghcr.io6.54GB2026-06-29 15:36
8
检测到您正在使用广告拦截插件,本站为公益站点,依赖广告维持运转 🙏 查看如何关闭 ×