
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Protractor端到端测试工具,用于AngularJS应用,通过无头真实Chrome容器化。此镜像可作为Protractor的直接替代品,使用方式与直接在本地安装的Protractor基本一致,确保测试在真实Chrome环境中执行。
PhantomJS被https://angular.github.io/protractor/#/browser-setup#setting-up-phantomjs%EF%BC%8C%E4%B8%94%E7%A1%AE%E5%AE%9E%E9%97%AE%E9%A2%98%E8%BE%83%E5%A4%9A%E3%80%82
简单来说,它是在xvfb上运行的真实Chrome。因此,您可以确信测试是在真实浏览器环境中运行的。
注意:chrome57不可用,因为它与Protractor配合不稳定,会出现间歇性测试失败,通常与通过by.binding选择元素有关。
最新版本镜像包含以下指定版本的包:
这些包版本固定,确保相互兼容。在镜像构建时拉取最新版Chrome有时会失败,因为Chromedriver通常滞后于Chrome的支持。
重要变更
从Chrome 58开始,Jasmine和Mocha不再包含在镜像中,假设这些包已安装在项目目录中。因此,镜像使用运行时挂载的/protractor目录下的node_modules子目录(见下文使用方法)。
bashdocker run -it --privileged --rm --net=host -v /dev/shm:/dev/shm -v $(pwd):/protractor docker.xuanyuan.run/webnicer/protractor-headless [protractor选项]
此命令将在当前目录运行protractor,因此应在测试根目录执行。建议创建脚本,例如/usr/local/bin/protractor-headless:
bash#!/bin/bash docker run -it --privileged --rm --net=host -v /dev/shm:/dev/shm -v $(pwd):/protractor docker.xuanyuan.run/webnicer/protractor-headless $@
通过此脚本,可像本地Protractor一样运行:
bashprotractor-headless [protractor选项]
镜像将/protractor/node_modules目录添加到NODE_PATH环境变量,以便使用项目自身node模块中的Jasmine、Mocha等依赖。
从https://docs.docker.com/release-notes/docker-engine/#1100-2016-02-04%E5%BC%80%E5%A7%8B%EF%BC%8CDocker%E6%94%AF%E6%8C%81%60--shm-size%60%E6%A0%87%E5%BF%97%EF%BC%8C%E6%97%A0%E9%9C%80%E5%86%8D%E6%98%A0%E5%B0%84%60/dev/shm%60%E3%80%82%E5%9B%A0%E6%AD%A4%EF%BC%8CDocker 1.10+可使用:
bashdocker run -it --privileged --rm --net=host --shm-size docker.xuanyuan.run/2g -v $(pwd):/protractor webnicer/protractor-headless [protractor选项]
默认屏幕分辨率为1280x1024,24位色深。可通过SCREEN_RES环境变量设置自定义分辨率和色深:
bashdocker run -it --privileged --rm --net=host -e SCREEN_RES=1920x1080x24 -v /dev/shm:/dev/shm -v $(pwd):/protractor docker.xuanyuan.run/webnicer/protractor-headless [protractor选项]
/dev/shm?Docker默认/dev/shm大小为64MB,在内存密集型页面上可能出现https://bugs.chromium.org/p/chromedriver/issues/detail?id=1097%E3%80%82Docker 1.10之前,共享主机的/dev/shm是简单解决方案;Docker 1.10+可使用--shm-size设置共享内存大小(建议2g,可根据需要调整)。
--privileged?Chrome使用沙箱机制,若在非特权容器中运行会提示:“Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Operation not permitted”。https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities%E6%A0%87%E5%BF%97%E4%BD%BF%E5%AE%B9%E5%99%A8%E8%8E%B7%E5%BE%97%E4%B8%8E%E4%B8%BB%E6%9C%BA%E8%BF%9B%E7%A8%8B%E5%87%A0%E4%B9%8E%E7%9B%B8%E5%90%8C%E7%9A%84%E8%B5%84%E6%BA%90%E6%9D%83%E9%99%90%EF%BC%8C%E7%A1%AE%E4%BF%9D%E6%B2%99%E7%AE%B1%E6%AD%A3%E5%B8%B8%E8%BF%90%E8%A1%8C%E3%80%82
--net=host?仅当容器化Protractor测试主机的localhost时需要。例如:主机运行8000端口测试服务器,浏览器访问http://localhost:8000正常,但容器内若无--net=host,localhost指向容器自身。使用--net=host可让容器共享主机网络栈,正确访问主机的localhost。
测试在Travis上运行,包括:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务