
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Pact CLI Docker镜像整合了Pact Ruby实现中的所有CLI工具,功能上与https://github.com/pact-foundation/pact-ruby-standalone%E4%B8%80%E8%87%B4%EF%BC%8C%E4%BD%86%E6%89%93%E5%8C%85%E4%B8%BADocker%E5%AE%B9%E5%99%A8%E5%BD%A2%E5%BC%8F%EF%BC%8C%E6%8F%90%E4%BE%9B%E5%8D%95%E4%B8%80%E9%A1%B6%E5%B1%82%E5%85%A5%E5%8F%A3%E7%82%B9%60pact%60%E3%80%82%E8%AF%A5%E9%95%9C%E5%83%8F%E4%B8%BB%E8%A6%81%E7%94%A8%E4%BA%8E%E5%8F%91%E5%B8%83%E5%92%8C%E9%AA%8C%E8%AF%81%E5%A5%91%E7%BA%A6%EF%BC%88pacts%EF%BC%89%EF%BC%8C%E4%BB%A5%E5%8F%8A%E4%B8%8EPact Broker进行交互,简化契约测试流程的集成和执行。
pact访问所有Pact CLI功能默认情况下,常规标签(如latest)仅构建amd64架构:
--platform=linux/amd64
shdocker run --rm -it docker.xuanyuan.run/pactfoundation/pact-cli:latest /bin/sh -c 'uname -sm'
多平台镜像可通过在任何发布标签后添加-multi获取,支持以下架构:
--platform=linux/amd64
--platform=linux/arm
--platform=linux/arm64
shdocker run --rm -it docker.xuanyuan.run/pactfoundation/pact-cli:latest-multi /bin/sh -c 'uname -sm'
可使用公共测试Pact Broker进行示例操作,设置以下环境变量:
shexport PACT_BROKER_BASE_URL="https://test.pactflow.io" export PACT_BROKER_USERNAME="dXfltyFMgNOFZAxr8io9wJ37iUpY42M" export PACT_BROKER_PASSWORD="O5AIZWxelWbLvqMd8PkAVycBJh2Psyg1"
示例中的$(date +%s)用于生成伪随机GIT_COMMIT。若使用Bearer Token认证的Pact Broker(如PactFlow),请设置PACT_BROKER_TOKEN而非用户名和密码。
-v标志将本地pacts文件挂载到容器中,示例见下文。localhost的Pact Broker,需添加--network="host"参数,使容器解析localhost为宿主机而非容器自身。sh$ docker run --rm pactfoundation/pact-cli:latest help Commands: pact-broker # 与Pact Broker交互 publish PACT_DIRS_OR_FILES ... # 将pacts发布到Pact Broker verify PACT_URL ... # 针对提供者验证pact(s) version # 打印版本信息 help [COMMAND] # 描述可用命令或特定命令的帮助 $ docker run --rm pactfoundation/pact-cli:latest pact-broker help Commands: pact-broker can-i-deploy -a, --pacticipant=PACTICIPANT -b, --broker-base-url=BRO... # 检查是否可以部署 pact-broker create-version-tag -a, --pacticipant=PACTICIPANT -b, --broker-base-u... # 为版本创建标签 pact-broker create-webhook URL -X, --request=REQUEST -b, --broker-base-url=BROKE... # 创建Webhook pact-broker describe-version -a, --pacticipant=PACTICIPANT -b, --broker-base-url... # 描述版本信息 pact-broker help [COMMAND] ... # 显示命令帮助 pact-broker publish PACT_DIRS_OR_FILES ... -a, --consumer-app-version=CONSUMER_A... # 发布pacts到Broker pact-broker version ... # 显示版本
可克隆仓库git@github.com:pact-foundation/pact-ruby-cli.git(https://github.com/pact-foundation/pact-ruby-cli%EF%BC%89%EF%BC%8C%E5%B9%B6%E4%BB%8E%E6%A0%B9%E7%9B%AE%E5%BD%95%E8%BF%90%E8%A1%8C%E4%BB%A5%E4%B8%8B%E5%91%BD%E4%BB%A4%EF%BC%9A
shdocker run --rm \ -w ${PWD} \ -v ${PWD}:${PWD} \ -e PACT_BROKER_BASE_URL \ -e PACT_BROKER_USERNAME \ -e PACT_BROKER_PASSWORD \ docker.xuanyuan.run/pactfoundation/pact-cli:latest \ publish \ ${PWD}/example/pacts \ --consumer-app-version fake-git-sha-for-demo-$(date +%s) \ --tag-with-git-branch
所有发布选项详见https://github.com/pact-foundation/pact_broker-client#publish%E3%80%82
演示:发布容器内置示例Pact
shdocker run --rm \ -e PACT_BROKER_BASE_URL \ -e PACT_BROKER_USERNAME \ -e PACT_BROKER_PASSWORD \ docker.xuanyuan.run/pactfoundation/pact-cli:latest \ publish \ /pact/example/pacts \ --consumer-app-version fake-git-sha-for-demo-$(date +%s)
参考示例https://github.com/pact-foundation/pact-ruby-cli/blob/master/docker-compose-verify.yml%EF%BC%9A
shPACT_BROKER_PUBLISH_VERIFICATION_RESULTS=true GIT_COMMIT=fake-git-sha-for-demo$(date +%s) GIT_BRANCH=master \ docker-compose -f docker-compose-verify.yml \ up --build --abort-on-container-exit --exit-code-from pact_verifier
所有验证选项详见https://github.com/pact-foundation/pact-provider-verifier/#usage%E3%80%82
shdocker run --rm \ -e PACT_BROKER_BASE_URL \ -e PACT_BROKER_USERNAME \ -e PACT_BROKER_PASSWORD \ docker.xuanyuan.run/pactfoundation/pact-cli:latest \ pact-broker can-i-deploy \ --pacticipant docker-example-consumer \ --latest
所有选项详见https://github.com/pact-foundation/pact_broker-client#can-i-deploy%E3%80%82
shdocker run --rm \ -e PACT_BROKER_BASE_URL \ -e PACT_BROKER_USERNAME \ -e PACT_BROKER_PASSWORD \ docker.xuanyuan.run/pactfoundation/pact-cli:latest \ pact-broker create-version-tag \ --pacticipant docker-example-consumer \ --version fake-git-sha-for-demo-$(date +%s) \ --tag prod
所有选项详见https://github.com/pact-foundation/pact_broker-client#create-version-tag%E3%80%82
shdocker run -dit \ --rm \ --name pact-mock-service \ -p 1234:1234 \ -v ${HOST_PACT_DIRECTORY}:/tmp/pacts \ docker.xuanyuan.run/pactfoundation/pact-cli:latest \ mock-service \ -p 1234 \ --host 0.0.0.0 \ --pact-dir /tmp/pacts
-it参数用于支持通过ctl+c停止容器。使用docker stop时容器关闭可能较慢,这是已知问题。所有选项详见https://github.com/pact-foundation/pact-mock_service#mock-service-usage%E3%80%82
CA证书
shdocker run --rm \ -v <宿主机证书文件路径>:/tmp/cacert.pem \ -e SSL_CERT_FILE=/tmp/cacert.pem \ docker.xuanyuan.run/pactfoundation/pact-cli:latest ...
也可设置SSL_CERT_DIR并挂载证书目录而非单个文件。
客户端证书认证(x509)
连接使用x509客户端证书认证的Pact Broker:
shdocker run --rm \ -v <宿主机客户端证书文件路径>:/tmp/clientcert.pem \ -v <宿主机客户端密钥文件路径>:/tmp/clientkey.pem \ -e X509_CLIENT_CERT_FILE=/tmp/clientcert.pem \ -e X509_CLIENT_KEY_FILE=/tmp/clientkey.pem \ docker.xuanyuan.run/pactfoundation/pact-cli:latest ...
为符合https://github.com/docker-library/official-images#consistency%EF%BC%8C%E5%AE%B9%E5%99%A8%E6%8F%90%E4%BE%9B%60sh%60%E8%AE%BF%E9%97%AE%EF%BC%88**%E6%B3%A8%E6%84%8F%EF%BC%9A%E5%AE%B9%E5%99%A8%E5%86%85%E6%9C%AA%E5%AE%89%E8%A3%85bash**%EF%BC%89%EF%BC%9A
sh$ docker run --rm pactfoundation/pact-cli sh -c 'ls' Gemfile Gemfile.lock bin entrypoint.sh example lib pact-cli.gemspec
sh$ docker run --rm pactfoundation/pact-cli ls Gemfile Gemfile.lock bin entrypoint.sh example lib pact-cli.gemspec
欢迎在GitHub上提交bug报告和拉取请求:https://github.com/pact-foundation/pact-ruby-cli%E3%80%82
本镜像作为开源软件发布,遵循https://opensource.org/licenses/MIT%E6%9D%A1%E6%AC%BE%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务