
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
Splitgraph安装包含两个组件:Splitgraph引擎和与其通信的https://www.github.com/splitgraph/splitgraph。引擎是一个Docker镜像,由位于https://github.com/splitgraph/splitgraph/blob/master/engine/Dockerfile的Dockerfile构建。
核心思路是使用特定凭据和数据库名称(见下文)运行引擎,并确保客户端使用相同的凭据进行配置。已发布的Docker镜像可在Docker Hub上找到:https://hub.docker.com/r/splitgraph/engine/
当前,引擎基于https://hub.docker.com/_/postgres/构建,并执行一些运行Splitgraph和挂载外部数据库(MongoDB/PostgreSQL/MySQL/Elasticsearch)所需的额外任务:
确保克隆引擎时使用--recurse-submodules,以初始化./src/cstore_fdw和./src/Multicorn中的Git子模块。也可在克隆后通过以下命令初始化并检出子模块:
git submodule update --init
然后运行make。可通过环境变量DOCKER_REPO和DOCKER_TAG覆盖引擎的标签。
对于基本场景,建议使用sgr engine管理引擎Docker容器。也可使用docker run或docker-compose。
例如,使用密码supersecure、默认用户sgr和数据库splitgraph(见"环境变量"),将主机端口5432转发到splitgraph/engine镜像:
通过docker run:
bashdocker run -d \ -e POSTGRES_PASSWORD=supersecure \ -p 5432:5432 \ -e SG_CONFIG_FILE=/.sgconfig \ -v $HOME/.splitgraph/.sgconfig:/.sgconfig \ docker.xuanyuan.run/splitgraph/engine
通过docker-compose:
ymlengine: image: docker.xuanyuan.run/splitgraph/engine ports: - 5432:5432 environment: - POSTGRES_PASSWORD=supersecure - SG_CONFIG_FILE=/.sgconfig volumes: - $HOME/.splitgraph/.sgconfig:/.sgconfig
然后运行docker-compose up -d engine
注意:如果已登录Splitgraph Cloud,需手动将.sgconfig文件绑定挂载到引擎中,以便其知道如何通过data.splitgraph.com进行身份验证。sgr engine包装器会自动执行此操作。更多信息见文档。
重要:确保https://www.github.com/splitgraph/splitgraph配置为使用运行引擎时提供的凭据和端口进行连接。
https://hub.docker.com/_/postgres/中记录的所有环境变量均适用于此引擎。目前无需额外环境变量。关键环境变量:
POSTGRES_USER:默认为sgrPOSTGRES_DB:默认为splitgraphPOSTGRES_PASSWORD:必须由用户设置由于splitgraph/engine基于官方Docker PostgreSQL镜像,其行为与https://hub.docker.com/_/postgres/中描述的一致。扩展引擎的最佳方式是将`.sql`和`.sh`脚本添加到`/docker-entrypoint-initdb.d/`目录。这些文件按当前区域设置定义的名称排序顺序执行。如需在Splitgraph初始化脚本之后运行文件,可参考`init_scripts`目录中的脚本。Splitgraph使用三位数字前缀(从`000`、`001`等开始)命名脚本,因此应相应命名自定义文件。
可在构建时(创建基于splitgraph/engine的新Dockerfile)或运行时(挂载卷到/docker-entrypoint-initdb.d/)添加这些脚本。
重要说明:无论使用哪种方法(扩展镜像或挂载卷),PostgreSQL仅在容器首次运行时执行这些初始化脚本。因此,如需添加新脚本,需docker rm容器以强制重新初始化。
以下是扩展splitgraph/engine并在Splitgraph初始化前后执行设置的示例Dockerfile:
DockerfileFROM docker.xuanyuan.run/splitgraph/engine # 使用0000_前缀确保在Splitgraph的000_脚本之前执行 COPY setup_before_splitgraph.sql /docker-entrypoint-initdb.d/0000_setup_before_splitgraph.sql # 不添加数字前缀,确保在Splitgraph的xxx_脚本之后执行 COPY setup_after_splitgraph.sql /docker-entrypoint-initdb.d/setup_after_splitgraph.sql
然后可像往常一样构建并运行(见"运行引擎"):
docker build . -t my-splitgraph-engine
与构建时添加脚本相同,将额外初始化脚本挂载到/docker-entrypoint-initdb.d/(适用相同的字典顺序规则):
通过docker run:
bashdocker run -d \ -v "$PWD/setup_before_splitgraph.sql:/docker-entrypoint-initdb.d/0000_setup_before_splitgraph.sql" \ -v "$PWD/setup_after_splitgraph.sql:/docker-entrypoint-initdb.d/setup_after_splitgraph.sql" \ -e POSTGRES_PASSWORD=supersecure \ -p 5432:5432 \ docker.xuanyuan.run/splitgraph/engine
通过docker-compose:
ymlengine: image: docker.xuanyuan.run/splitgraph/engine ports: - 5432:5432 environment: - POSTGRES_PASSWORD=supersecure expose: - 5432 volumes: - ./setup_before_splitgraph.sql:/docker-entrypoint-initdb.d/0000_setup_before_splitgraph.sql - ./setup_after_splitgraph.sql:/docker-entrypoint-initdb.d/setup_after_splitgraph.sql
然后运行docker-compose up -d engine
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务