
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Pact CLI Docker镜像整合了Pact Ruby实现中的所有CLI工具,功能上与https://github.com/pact-foundation/pact-ruby-standalone一致,但打包为Docker容器形式,提供单一顶层入口点`pact`。该镜像主要用于发布和验证契约(pacts),以及与Pact 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),并从根目录运行以下命令:
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。
演示:发布容器内置示例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:
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。
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。
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。
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。
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,容器提供`sh`访问(**注意:容器内未安装bash**):
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。
本镜像作为开源软件发布,遵循https://opensource.org/licenses/MIT条款。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务