
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该通用容器设计用于运行需要凭据或其他任务配置的Java应用(以JAR形式)。当前基于Alpine Linux,默认假设使用AWS作为存储机制(未来可扩展为灵活配置)。它通过环境变量和S3对象,基于简单约定控制应用执行,作为为每个Java应用构建单独Docker容器的替代方案(当这些容器本质上相同,仅启动脚本和环境变量不同时)。
注意:此为alpha版本,在1.0.0版本发布前,配置约定可能发生不兼容变更。
容器启动时按以下顺序执行操作:
USERSCRIPT_PRE_BOOTSTRAP,其内容将被写入文件并在其他操作前执行(需符合格式要求,见下文)SECRETS_BASE_S3_URL,从该地址下载密钥到SECRETS_BASE_DIR并使用GnuPG(gpg)解密:
.gpg文件和.key文件组成,其中.key文件通过AWS KMS加密,.gpg文件通过KMS加密的密钥加密(信封加密机制).key文件的KMS权限BOOTSTRAP_S3_URL,从该地址下载引导脚本并执行JAVA_JAR_S3_URL,从该地址下载JAR文件,并通过JAVA_JAR_S3_URL.sig下载KMS加密的签名进行验证;验证通过后,JAVA_JAR变量将被设置为下载的JAR路径USERSCRIPT_POST_BOOTSTRAP,其内容将在所有操作后、Java应用启动前执行(需符合格式要求,见下文)exec java -jar $JAVA_JAR执行应用;若JAVA_JAR未设置,启动失败| 环境变量 | 描述 | 必要性 |
|---|---|---|
JAVA_JAR | 要执行的JAR文件路径,可通过自定义脚本设置或由S3下载自动设置 | 必须 |
USERSCRIPT_PRE_BOOTSTRAP | 预引导脚本内容(base64编码) | 可选 |
USERSCRIPT_POST_BOOTSTRAP | 后引导脚本内容(base64编码) | 可选 |
USERSCRIPT_FORMAT | 用户脚本格式,支持gzip或zip,不设置则为原始文本 | 可选 |
SECRETS_BASE_S3_URL | 密钥文件在S3中的基础URL(所有密钥文件的存储前缀) | 可选 |
SECRETS_BASE_DIR | 密钥文件在容器内的存储目录 | 可选(默认路径由容器内部定义) |
BOOTSTRAP_S3_URL | S3中引导脚本的URL | 可选 |
JAVA_JAR_S3_URL | S3中JAR文件的URL | 可选(若通过其他方式设置JAVA_JAR) |
USERSCRIPT_*变量内容必须经过base64编码USERSCRIPT_FORMAT指定gzip或zip,未指定则按原始文本处理并执行使用AWS KMS生成由KEY_ID加密的数据密钥(AES-256):
bashaws kms generate-data-key-without-plaintext \ --key-id=${KEY_ID} \ --key-spec=AES_256 --query CiphertextBlob \ --output=text \ | base64 -d \ > ${SECRET_FILE}.key
使用上述生成的密钥解密后加密实际密钥内容:
bashaws kms decrypt \ --ciphertext-blob=fileb://${SECRET_FILE}.key \ --query=Plaintext \ --output=text \ | base64 -d \ | gpg --symmetric --passphrase-fd 0 --cipher-algo AES256 --batch \ --out ${SECRET_FILE}.gpg ${SECRET_FILE}
仅上传加密后的密钥文件(.gpg和.key)到S3,所有密钥需放在同一前缀下以便容器发现:
bashaws s3 cp ${SECRET_FILE}.gpg ${SECRETS_PREFIX}/${SECRET_FILE}.gpg aws s3 cp ${SECRET_FILE}.key ${SECRETS_PREFIX}/${SECRET_FILE}.key
生成JAR文件的SHA-512哈希,使用KMS加密后上传到S3:
bash# 生成加密签名 aws kms encrypt --key-id ${KEY_ID} --plaintext "$(sha512sum < ${JAR_FILE})" --output text --query CiphertextBlob | base64 -d > ${JAR_FILE}.sig # 上传JAR和签名到S3 aws s3 cp ${JAR_FILE} ${JAR_S3_URL} aws s3 cp ${JAR_FILE}.sig ${JAR_S3_URL}.sig
master分支,然后执行签名并将JAR上传到S3您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务