
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
FormPlayer是一个基于Spring Framework开发的RESTful XForm录入服务。通过用户恢复和http://dimagi.github.io/xform-spec/%EF%BC%8CFormPlayer%E6%94%AF%E6%8C%81%E9%80%9A%E8%BF%87JSON%E8%B0%83%E7%94%A8%E5%92%8C%E5%93%8D%E5%BA%94%E8%BF%9B%E8%A1%8C%E8%A1%A8%E5%8D%95%E5%BD%95%E5%85%A5%EF%BC%88%E8%AF%A6%E8%A7%81%E4%B8%8B%E6%96%87%EF%BC%89%E3%80%82%E8%BF%99%E4%BA%9B%E6%96%87%E4%BB%B6%E9%80%9A%E5%B8%B8%E7%94%B1https://www.github.com/dimagi/commcare-hq%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%AE%9E%E4%BE%8B%E6%89%98%E7%AE%A1%E3%80%82FormPlayer%E4%BE%9D%E8%B5%96https://www.github.com/dimagi/commcare-core%E5%BA%93%EF%BC%88%E4%BD%9C%E4%B8%BA%E5%AD%90%E4%BB%93%E5%BA%93%E5%8C%85%E5%90%AB%EF%BC%89%EF%BC%8C%E5%B9%B6%E9%80%9A%E8%BF%87gradle%E6%9E%84%E5%BB%BA%EF%BC%88%E5%90%AB%E5%8C%85%E8%A3%85%E5%99%A8%E6%96%87%E4%BB%B6%EF%BC%89%E3%80%82
适用于需要集成XForm表单录入功能的CommCareHQ环境,支持本地开发、Docker容器化部署及生产环境服务,满足表单数据采集、会话管理和用户数据隔离需求。
基础步骤
克隆仓库
bash$ git clone https://github.com/dimagi/formplayer.git
下载子模块依赖
bash$ git submodule update --init --recursive
创建属性文件
bash$ cp config/application.example.properties config/application.properties # 根据需要更新属性(默认值适用于本地运行)
特别注意:确保server.port值与CommCareHQ的localsettings.py中FORMPLAYER_URL的端口一致。
创建数据库
运行以下命令创建formplayer数据库(执行后需输入密码,本地运行时使用CommCareHQ本地Postgres用户的密码,可在localsettings.py的DATABASES部分找到):
bash$ createdb formplayer -U commcarehq -h localhost # 根据需要更新连接信息(默认值适用于本地运行)
若Postgres运行在Docker中,需在Docker shell中执行,可通过CommCareHQ仓库的./scripts/docker bash postgres命令进入。
运行命令
含测试运行
bash$ ./gradlew build && java -jar build/libs/formplayer.jar
不含测试运行
bash$ ./gradlew assemble && java -jar build/libs/formplayer.jar
测试命令
bash$ ./gradlew test # 运行单个测试 $ ./gradlew :test --tests tests.NewFormTests.testNewForm # 持续测试模式 $ ./gradlew test -t
Linux构建注意事项:有时需运行
bash$ gradle wrapper
"Could not resolve project :commcare"
运行git submodule update --init
编译错误(如"no suitable constructor found for OutputFormat(Document)")
可能是Java版本错误,执行java -version应显示1.8。解决方法:
~/.gradle/gradle.properties,添加org.gradle.java.home=/JDK_PATH-Dorg.gradle.java.home=/JDK_PATH为支持断点调试和源码关联,建议使用IntelliJ IDE:
formplayer仓库,选择根目录下的build.gradle注:也可使用Android Studio,步骤同上。
保持application.properties更新
application.example.properties可能会新增必要配置,更新代码后若遇错误,可运行:
bashdiff -u config/application{.example,}.properties
缺失的配置行以-开头。
若需将FormPlayer作为CommCare HQ的Docker服务运行,从CommCare HQ仓库执行以下步骤:
scripts/docker up(仅服务)或scripts/docker runserver(HQ及服务)。scripts/get_webhost,将输出添加到/etc/hosts(Linux用户可执行scripts/get_webhost | sudo tee -a /etc/hosts)。localsettings.py:FORMPLAYER_URL = 'http://localhost:8010'和BASE_ADDRESS = 'webhost:8000'./manage.py runserver 0.0.0.0:8000贡献commcare代码变更
Formplayer依赖commcare-core仓库,该仓库master分支不稳定,Formplayer使用formplayer分支。子模块libs/commcare应始终指向formplayer分支。
更新CommCare版本
将Formplayer更新至CommCare新版本(如2.34→2.35)时,需从commcare_X.Y分支向formplayer分支提交PR。QA完成后合并PR并更新Formplayer子模块。
FormPlayer通过Spring的Swagger插件https://github.com/springfox/springfox%E8%87%AA%E5%8A%A8%E7%94%9F%E6%88%90API%E6%96%87%E6%A1%A3%E3%80%82%E5%90%AF%E5%8A%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%90%8E%EF%BC%8C%E8%AE%BF%E9%97%AE%60http://localhost:8080/swagger-ui.html#/%60%EF%BC%88%E6%A0%B9%E6%8D%AE%E5%AE%9E%E9%99%85%E4%B8%BB%E6%9C%BA%E5%92%8C%E7%AB%AF%E5%8F%A3%E8%B0%83%E6%95%B4%EF%BC%89%E6%9F%A5%E7%9C%8B%E6%96%87%E6%A1%A3%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务