
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
subfuzion/dart:slim是一个基于https://hub.docker.com/_/scratch镜像构建的轻量级Dart应用容器基础镜像。它包含运行Dart应用(尤其是服务器应用)所需的最小系统运行时依赖,同时提供TLS根证书 bundle(支持HTTPS请求)和DNS服务支持(允许向外部主机发起HTTP客户端请求)。
该镜像旨在构建极小化的Dart容器,特别适合微服务和无服务器应用场景,可显著减少镜像大小并提升启动速度。仓库中包含测试用例和容器化服务器应用示例,可用于演示基础服务器镜像的大小及启动性能(对比Dart VM和Dart AOT编译器)。
dart:mirrors(无法使用AOT编译)AOT编译可实现最快启动速度、一致的运行时性能,且无JIT的"预热"延迟。最小服务器应用镜像体积约25MB,容器启动至服务器监听请求时间可控制在亚秒级。
Dockerfile示例
dockerfileFROM docker.xuanyuan.run/google/dart # 如需确保使用最新Dart和根证书bundle,取消以下注释 #RUN apt -y update && apt -y upgrade WORKDIR /app COPY pubspec.yaml . RUN dart pub get COPY . . RUN dart pub get --offline RUN dart compile exe /app/bin/server.dart -o /app/bin/server FROM docker.xuanyuan.run/subfuzion/dart:slim COPY --from=0 /app/bin/server /app/bin/server # 复制运行时所需的其他目录或文件,例如: #COPY --from=0 /app/static/ /app/static/ EXPOSE 8080 ENTRYPOINT ["/app/bin/server"]
当应用依赖dart:mirrors时,需使用JIT编译。通过创建JIT编译快照(kernel文件)可实现接近AOT的加载速度。最小服务器应用镜像体积约50MB,容器启动至监听请求时间为亚秒级。
JIT编译代码有预热时间(动态优化过程),长期运行时可能比AOT更快,但短生命周期容器难以受益。
Dockerfile示例
dockerfileFROM docker.xuanyuan.run/google/dart # 如需确保使用最新Dart和根证书bundle,取消以下注释 #RUN apt -y update && apt -y upgrade WORKDIR /app COPY pubspec.yaml . RUN dart pub get COPY . . RUN dart pub get --offline RUN dart compile kernel -o bin/server.dill bin/server.dart FROM docker.xuanyuan.run/subfuzion/dart:slim COPY --from=0 /usr/lib/dart/bin/dart /usr/lib/dart/bin/dart # 可能需要复制一个或多个系统*.dill库 # 可通过以下命令列出google/dart镜像中的可用文件: # docker run --rm google/dart ls -la /usr/lib/dart/lib/_internal # 例如,开发工具支持需要dartdev.dill # 如无法确定具体所需文件,可复制整个目录(会增加约70MB镜像体积) #COPY --from=0 /usr/lib/dart/lib/_internal/*.dill /usr/lib/dart/lib/_internal/ COPY --from=0 /app/bin/server.dill /app/bin/server.dill # 复制运行时所需的其他目录或文件,例如: #COPY --from=0 /app/static/ /app/static/ EXPOSE 8080 ENTRYPOINT ["/usr/lib/dart/bin/dart", "/app/bin/server.dill"]
shell$ cd test $ ./dartslim_test.sh [+] Building 9.7s (15/15) FINISHED 00:00 +0: test/image_test.dart: Is server reachable? ping-test 00:00 +1: test/image_test.dart: Server DNS client tests remote-ping-test 00:00 +2: All tests passed!
拉取基础镜像
shell$ time docker pull docker.xuanyuan.run/subfuzion/dart:slim slim: Pulling from subfuzion/dart Digest: sha256:5bf1b8083f40b83c437301da991dbca8901ae48c525f56ccda05669040b93e1a Status: Downloaded newer image for subfuzion/dart:slim docker.io/subfuzion/dart:slim real 0m1.656s user 0m0.156s sys 0m0.082s $ docker image ls subfuzion/dart:slim REPOSITORY TAG IMAGE ID CREATED SIZE subfuzion/dart slim d92db830c85b 12 hours ago 4.09MB
AOT编译应用测试
shell$ cd ./examples/dart-aot-shelf-server $ docker build -t server-aot . [+] Building 11.5s (15/15) FINISHED $ time docker run -it -p 8080:8080 --name server-aot-test server-aot --quit Starting server Serving at http://0.0.0.0:8080 time elapsed: 1 ms real 0m0.643s user 0m0.152s sys 0m0.071s
JIT编译应用测试
shell$ cd ./examples/dart-vm-shelf-server $ docker build -t server-vm . [+] Building 4.0s (16/16) FINISHED $ time docker run -it -p 8080:8080 --name server-vm-test server-vm --quit Starting server Serving at http://0.0.0.0:8080 time elapsed: 91 ms real 0m0.777s user 0m0.144s sys 0m0.070s
测试总结
| 编译器 | 构建镜像时间 | 容器启动至服务器监听时间 | main()至服务器监听时间 |
|---|---|---|---|
| AOT | 11.5s | 0.643s | 1ms |
| JIT | 4.0s | 0.777s | 91ms |
测试环境:
非官方Google项目
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 subfuzion/dart 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: