nasqueron/arcanist提供nasqueron/arcanist镜像,用于在Docker容器中运行Arcanist(Phabricator的命令行客户端)。旨在无需在Docker引擎服务器上安装PHP的情况下使用arc命令,特别适用于在服务器上调整Docker镜像时使用Arcanist,避免在各处安装PHP环境。
.arcrc、.gitconfig)和工作区卷(存储待操作仓库)arc命令调用,实现直接执行arc <命令>arc call-conduit命令的标准输入传递问题arc update命令,可自动拉取最新镜像并重建用户专用镜像适用于需要在无PHP环境的Docker引擎服务器上使用Arcanist的场景,例如:
arc diff、arc shell、arc call-conduit等)拉取镜像后即可直接运行容器或调用arc命令:
bash# 拉取镜像 docker pull nasqueron/arcanist # 启动交互式shell docker run -it --rm nasqueron/arcanist bash # 直接执行arc命令(示例:arc anoid) docker run -it --rm nasqueron/arcanist arc anoid
镜像提供两个关键卷,需正确挂载以确保功能正常:
用于存储Arcanist和Git的配置文件,包含:
.arcrc:Arcanist配置文件.gitconfig:Git配置文件(含用户身份等信息)配置方法:
mkdir -p ~/.arcbashcp ~/.arcrc ~/.arc/ cp ~/.gitconfig ~/.arc/
用于挂载待操作的Git仓库目录,需将本地仓库路径挂载至此卷。
注意:使用pwd获取当前目录路径(而非.),避免Docker客户端与服务器不在同一机器时的路径解析问题。
创建/usr/local/bin/arc脚本,实现直接调用arc命令:
bashcat > /usr/local/bin/arc << 'EOF' #!/bin/sh if [ "$1" = "shell" ]; then shift COMMAND=bash else mkdir -p ~/.arc COMMAND=arc fi docker run -it --rm -v ~/.arc:/opt/config -v $(pwd):/opt/workspace nasqueron/arcanist $COMMAND "$@" EOF # 添加执行权限 chmod +x /usr/local/bin/arc
使用示例:
basharc shell # 启动包含当前目录的交互式shell arc diff # 执行arc diff命令
contrib/目录提供两种生产级包装器,解决基础脚本的局限性:
推荐:contrib/arc
nasqueron/arcanist:<uid>-<gid>专用镜像,解决OpenSSH客户端对用户存在性的要求(仅--user $UID参数不足)arc update命令,自动拉取最新基础镜像并重建用户镜像arc call-conduit的标准输入传递问题兼容版:contrib/arc-runs-as-root
跳过用户镜像构建步骤,直接以root身份运行容器,适合无需多用户隔离的场景。
使用优势:
bash# 挂载配置和工作区运行arc命令 docker run -it --rm \ -v ~/.arc:/opt/config \ -v $(pwd):/opt/workspace \ nasqueron/arcanist arc diff
bash# 创建脚本后直接使用 arc shell # 进入交互式环境 arc list # 列出待提交的变更 arc commit # 创建提交
bash# 安装contrib/arc后 arc update # 更新基础镜像和用户镜像 arc call-conduit differential.query # 执行conduit API调用 arc shell # 进入带用户环境的交互式shell
$(pwd)而非.挂载当前目录,确保跨机器环境兼容性.arcrc和.gitconfig,否则可能导致认证或命令执行失败-it参数可能导致arc call-conduit异常,建议使用增强型包装脚本contrib/arc,通过用户镜像解决文件权限和SSH客户端问题arc update(增强型脚本)确保使用最新镜像版本manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务