
如果你使用 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://badge.imagelayers.io/centurylink/golang-builder.svg](https://imagelayers.io/?images=centurylink/golang-builder:latest 'Get your own badge on imagelayers.io')
容器化的构建环境,用于编译Go可执行包并将其打包为轻量级Docker镜像。
Go语言的优势之一是可将应用编译为自包含的静态链接二进制文件,无需依赖其他库即可运行,因此能创建极小体积的镜像。例如,使用scratch(0字节基础镜像)作为基础,镜像大小仅等于二进制文件本身,远小于官方Go镜像(约500MB)。该镜像会接收源代码,编译为静态二进制文件,并生成包含该文件的最小Docker镜像,其实现灵感来自Xebia博客的《创建最小Docker容器》一文。
默认假设主包(包含可执行命令的包)位于项目根目录。若主包在子目录,可通过MAIN_PATH环境变量指定相对路径(如MAIN_PATH=cli)。
需在主包的package语句后添加注释指定规范导入路径,例如:package main // import "github.com/CenturyLink/hello",以便镜像将源代码挂载到GOPATH的正确位置。
默认通过go get获取第三方依赖;若使用Godep管理依赖,镜像会优先使用Godeps/_workspace目录中的包。
需将Dockerfile放在项目根目录(或通过DOCKER_BUILD_CONTEXT指定路径),以便镜像自动打包编译后的二进制文件。示例Dockerfile:
dockerfileFROM docker.xuanyuan.run/scratch EXPOSE 3000 COPY hello / ENTRYPOINT ["/hello"]
需挂载源代码到/src,并挂载Docker socket(/var/run/docker.sock)以生成镜像:
bashdocker run --rm \ -v "$(pwd):/src" \ -v /var/run/docker.sock:/var/run/docker.sock \ docker.xuanyuan.run/centurylink/golang-builder
生成的镜像标签默认来自包名,可自定义标签:
bashdocker run --rm \ -v "$(pwd):/src" \ -v /var/run/docker.sock:/var/run/docker.sock \ docker.xuanyuan.run/centurylink/golang-builder \ centurylink/hello:1.0
仅编译不生成镜像(不挂载Docker socket):
bashdocker run --rm -v $(pwd):/src docker.xuanyuan.run/centurylink/golang-builder
通过环境变量配置:
CGO_ENABLED: 是否启用CGO(默认false)LDFLAGS: 链接器参数(默认-s)COMPRESS_BINARY: 是否用UPX压缩二进制文件(默认false)OUTPUT: 指定二进制文件输出路径MAIN_PATH: 主包相对路径DOCKER_BUILD_CONTEXT: Dockerfile所在路径示例:
bashdocker run --rm \ -e CGO_ENABLED=true \ -e LDFLAGS='-extldflags "-static"' \ -e COMPRESS_BINARY=true \ -e OUTPUT=/bin/my_go_binary \ -v $(pwd):/src \ docker.xuanyuan.run/centurylink/golang-builder
centurylink/golang-builder-cross镜像支持交叉编译(Linux、OSX等多平台),示例:
bashdocker run --rm \ -e BUILD_GOOS="linux" \ -e BUILD_GOARCH="arm amd64" \ -v $(pwd):/src \ docker.xuanyuan.run/centurylink/golang-builder-cross
使用scratch镜像时缺少根CA证书,可通过以下方式解决:
centurylink/ca-certs镜像(含常用根CA,仅258kB)dockerfileFROM centurylink/ca-certs EXPOSE 3000 COPY hello / ENTRYPOINT ["/hello"]
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务