
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
建议使用官方镜像:https://hub.docker.com/repository/r/emscripten/emsdk
如果遇到功能缺失或bug,请向https://github.com/emscripten-core/emsdk/反馈。
基于:https://hub.docker.com/r/trzeci/emscripten-slim
这是一个完整的容器,用于使用Emscripten编译C++代码。目标是提供包含最流行开发包且易于扩展的容器。每个标签均由https://github.com/trzecieu/emscripten-docker/blob/master/docker/trzeci/emscripten/Dockerfile构建。
| 软件包 | 版本 |
|---|---|
cmake | 3.14.3 |
| 软件包 | 版本 |
|---|---|
ant | 1.10.5-2 |
build-essential | 12.6 |
ca-certificates | 20200601~deb10u1 |
curl | 7.64.0-4+deb10u1 |
git | 1 |
libidn11 | 1.33-2.2 |
libxml2 | 2.9.4+dfsg1-7+b3 |
make | 4.2.1-1.2 |
openjdk-11-jre-headless | 11.0.7+10-3~deb10u1 |
openssh-client | 1 |
python | 2.7.16-1 |
python-pip | 18.1-5 |
python3 | 3.7.3-1 |
python3-pip | 18.1-5 |
unzip | 6.0-23+deb10u1 |
wget | 1.20.1-1.1 |
zip | 3.0-11+b1 |
使用的模板:
{VERSION}:Emscripten 1.34.1以来的官方https://github.com/emscripten-core/emscripten/tags,例如`1.38.25`{BRANCH}:["incoming", "master"]中的一个| 标签 | 描述 |
|---|---|
latest | 默认版本指向Emscripten的https://github.com/emscripten-core/emscripten/releases |
{VERSION}-upstream | Emscripten的最新版本,基于Clang10 |
{VERSION}-fastcomp | 基于修改后的Clang 6的Emscripten旧版本,即将https://github.com/emscripten-core/emscripten/pull/*** |
{VERSION}-ubuntu | https://hub.docker.com/r/trzeci/emscripten-ubuntu版本的别名,基于自定义fastcomp构建 |
{VERSION}-slim | 旧版:https://hub.docker.com/r/trzeci/emscripten-slim版本的别名,基于优化大小的自定义fastcomp构建 |
{VERSION} | 旧版:基于https://hub.docker.com/r/trzeci/emscripten-slim的自定义fastcomp构建 |
sdk-tag-{VERSION}-64bit | 旧版:标签版本 |
sdk-{BRANCH}-64bit | 旧版:分支版本 |
标记为旧版的标签不再构建,推荐使用upstream版本。
容器内提供所有Emscripten命令,例如emcc、em++、emmake、emar、node、asm2wasm等。
编译单个文件:
bashdocker run --rm -v `pwd`:`pwd` docker.xuanyuan.run/trzeci/emscripten emcc helloworld.cpp -o helloworld.js
更详细的Hello World示例:
bash# 创建helloworld.cpp cat << EOF > helloworld.cpp #include <iostream> int main() { std::cout << "Hello World!" << std::endl; return 0; } EOF # 使用Docker镜像编译 docker run \ --rm \ -v $(pwd):$(pwd) \ -u $(id -u):$(id -g) \ docker.xuanyuan.run/trzeci/emscripten \ emcc helloworld.cpp -o helloworld.js # 在主机上执行 node helloworld.js
编译命令分解:
| 部分 | 描述 |
|---|---|
docker run | 在容器中运行命令的标准指令 |
--rm | 执行后删除容器(优化) |
-v $(pwd):$(pwd) | 将主机当前文件夹挂载到容器中的相同路径,便于排查问题 |
-u $(id -u):$(id -g) | (1.37.23+) 以非root用户运行容器,确保生成的文件可被本地用户访问 |
trzeci/emscripten | 获取此容器的latest标签 |
emcc helloworld.cpp -o helloworld.js | 在容器内执行编译命令 |
继承基础镜像的环境设置和入口点:
DockerfileFROM docker.xuanyuan.run/trzeci/emscripten:1.39.17-upstream # 最佳实践:避免使用`latest`标签 RUN ...
多阶段构建示例(切换到fedora基础镜像):
dockerfileFROM docker.xuanyuan.run/trzeci/emscripten:1.39.17-upstream as emscripten_base FROM docker.xuanyuan.run/fedora COPY --from=emscripten_base /emsdk_portable /emsdk_portable RUN dnf install -y python python-pip ca-certificates ENTRYPOINT ["/emsdk_portable/entrypoint"]
bash# 拉取代码 git clone https://github.com/trzecieu/emscripten-docker # 编译指定版本 python -m builder compile 1.39.17
bash# 导航到目标版本目录 cd emscripten-docker/docker/trzeci/emscripten-upstream # 构建镜像 docker build -t my_emscripten --build-arg EMSCRIPTEN_VERSION=1.39.17 .
由jenkins生成:2020-06-13T00:17:53.319432
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务