轩辕镜像
轩辕镜像专业版
个人中心搜索镜像
交易
充值流量我的订单
工具
工单支持镜像收录Run 助手IP 归属地密码生成Npm 源Pip 源
帮助
常见问题我要吐槽
其他
关于我们网站地图

官方QQ群: 13763429

轩辕镜像
镜像详情
portainer/golang-builder
官方博客使用教程热门镜像工单支持
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。
轩辕镜像 - 国内开发者首选的专业 Docker 镜像下载加速服务平台 - 官方QQ群:13763429 👈点击免费获得技术支持。
本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

golang-builder Docker 镜像下载 - 轩辕镜像

golang-builder 镜像详细信息和使用指南

golang-builder 镜像标签列表和版本信息

golang-builder 镜像拉取命令和加速下载

golang-builder 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

golang-builder
portainer/golang-builder
自动构建

golang-builder 镜像详细信息

golang-builder 镜像标签列表

golang-builder 镜像使用说明

golang-builder 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

用于构建Golang二进制文件的容器化构建环境,可将源代码编译为静态链接的可执行文件,并生成仅包含该二进制文件的最小Docker镜像,支持自定义配置、依赖管理和跨平台编译。
8 收藏0 次下载activeportainer镜像
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源
中文简介版本下载
🚀轩辕镜像专业版更稳定💎一键安装 Docker 配置镜像源

golang-builder 镜像详细说明

golang-builder 使用指南

golang-builder 配置说明

golang-builder 官方文档

golang-builder

概述

golang-builder是一个容器化构建环境,用于编译Golang可执行包为静态链接的二进制文件。静态链接的二进制文件可在无其他依赖的容器中运行,因此能生成体积极小的镜像(基于0字节的scratch镜像,仅包含二进制文件)。相比官方golang镜像(未添加应用前已达500MB),该工具能显著减小最终镜像体积。其实现深受Xebia博客中《Create the Smallest Possible Docker Container》一文的启发。

核心功能与特性

  • 静态链接二进制生成:将Golang源代码编译为自包含、静态链接的可执行文件,无外部依赖
  • 最小Docker镜像:基于scratch镜像构建最终应用镜像,仅包含编译后的二进制文件,体积接近二进制文件本身
  • 依赖管理支持:默认通过go get获取第三方依赖,也支持Godep工具管理的依赖(使用Godeps/_workspace目录)
  • 自定义编译配置:通过环境变量调整编译参数(如CGO启用、链接器标志、二进制压缩等)
  • 跨平台编译:提供portainer/golang-builder:cross-platform镜像,支持为不同操作系统和架构(Linux、OSX等)构建二进制文件

使用场景与适用范围

适用于需要构建轻量级Golang应用Docker镜像的场景,尤其适合对镜像体积有严格要求的生产环境。同时支持仅编译二进制文件(不生成Docker镜像)及跨平台编译需求,满足多架构/操作系统的部署场景。

使用方法与配置说明

项目要求

项目结构

工具默认假设"main"包(包含可执行命令的包)位于项目目录根目录。示例结构:

.
├─api
│ ├─api.go
│ └─api_test.go
├─greeting
│ ├─greeting.go
│ └─greeting_test.go
├─hello.go  // main包所在文件
└─hello_test.go

如需覆盖默认main包位置,可在运行时指定main包路径(需使用容器内挂载目录前缀,如/src):

docker run --rm \
  -v "$(pwd):/src" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  portainer/golang-builder /src/subfolder/main

规范导入路径

工具需要知道应用的全限定包名,可通过Go 1.4引入的规范导入路径注释指定。该注释需紧跟package子句:

package main // import "github.com/CenturyLink/hello"

工具会读取此注释,将源代码挂载到GOPATH的正确位置进行编译。

依赖管理

  • 默认行为:自动go get导入的第三方包(项目内已包含的包除外)
  • Godep支持:若使用Godep管理依赖,工具会优先使用Godeps/_workspace目录中的依赖,避免下载不同版本

Dockerfile

如需自动生成Docker镜像,项目根目录需包含Dockerfile。编译后的二进制文件会被放置在项目根目录,因此Dockerfile可假设二进制文件与自身同级:

FROM scratch
EXPOSE 3000
COPY hello /
ENTRYPOINT ["/hello"]

若项目根目录无Dockerfile,工具仅编译二进制文件,不生成镜像。

基本使用方法

编译并生成Docker镜像

工具需要:

  • 挂载源代码目录到容器/src
  • 挂载Docker socket(/var/run/docker.sock)以与Docker API交互生成镜像

假设当前位于项目根目录,运行命令:

docker run --rm \
  -v "$(pwd):/src" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  portainer/golang-builder

生成的镜像默认标签为Go包名(如hello:latest)。

指定镜像标签

可在命令末尾添加自定义镜像标签:

docker run --rm \
  -v "$(pwd):/src" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  portainer/golang-builder \
  centurylink/hello:1.0

仅编译二进制文件

不挂载Docker socket即可仅编译二进制文件(不生成镜像):

docker run --rm -v $(pwd):/src portainer/golang-builder

额外配置选项

通过环境变量自定义编译行为:

环境变量说明默认值
CGO_ENABLED是否启用CGO编译false
LDFLAGS传递给链接器的标志'-s'
COMPRESS_BINARY是否使用UPX压缩最终二进制文件false
OUTPUT通过go build -o指定二进制文件输出路径(空,使用默认输出路径)

示例(启用CGO、自定义链接器标志、压缩二进制):

docker run --rm \
  -e CGO_ENABLED=true \
  -e LDFLAGS='-extldflags "-static"' \
  -e COMPRESS_BINARY=true \
  -e OUTPUT=/bin/my_go_binary \
  -v $(pwd):/src \
  portainer/golang-builder

跨平台编译

portainer/golang-builder:cross-platform镜像支持跨平台编译,默认生成Linux和OSX的32位及64位二进制文件(命名格式如mypackage-darwin-amd64)。可通过环境变量覆盖默认平台:

  • BUILD_GOOS:指定目标操作系统(如"linux"、"darwin")
  • BUILD_GOARCH:指定目标架构(如"amd64"、"arm")

示例(构建Linux的amd64和arm架构二进制):

docker run --rm \
  -e BUILD_GOOS="linux" \
  -e BUILD_GOARCH="arm amd64" \
  -v $(pwd):/src \
  portainer/golang-builder:cross-platform

SSL验证

使用scratch镜像时,应用可能因缺少根CA证书无法访问SSL端点,报错:x509: failed to load system roots and no roots provided。解决方案:

  • 不推荐:禁用SSL验证
  • 推荐:
    • 打包必要的根CA证书到应用中
    • 使用包含根CA证书的最小基础镜像,如centurylink/ca-certs(仅258 kB,基于scratch添加常用根CA证书)
查看更多 golang-builder 相关镜像 →
concourse/golang-builder logo
concourse/golang-builder
by Concourse CI
用于项目CI流水线中编译Go应用的Docker镜像
21M+ pulls
上次更新:1 天前
accelbyte/golang-builder logo
accelbyte/golang-builder
by accelbyte
用于构建Golang项目的构建器镜像
100K+ pulls
上次更新:7 个月前
simplesurance/golang-builder logo
simplesurance/golang-builder
by simplesurance
暂无描述
50K+ pulls
上次更新:5 天前
vhiveease/golang-builder logo
vhiveease/golang-builder
by vhiveease
暂无描述
10K+ pulls
上次更新:6 个月前

常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像免费版与专业版有分别支持哪些镜像?

免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

轩辕镜像下载加速使用手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

🔐

登录方式进行 Docker 镜像下载加速教程

通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤

🐧

Linux Docker 镜像下载加速教程

在 Linux 系统上配置轩辕镜像源,支持主流发行版

🖥️

Windows/Mac Docker 镜像下载加速教程

在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统

📦

Docker Compose 镜像下载加速教程

在 Docker Compose 中使用轩辕镜像加速,支持容器编排

📋

K8s containerd 镜像下载加速教程

在 k8s 中配置 containerd 使用轩辕镜像加速

🔧

宝塔面板 Docker 镜像下载加速教程

在宝塔面板中配置轩辕镜像加速,提升服务器管理效率

💾

群晖 NAS Docker 镜像下载加速教程

在 Synology 群晖NAS系统中配置轩辕镜像加速

🐂

飞牛fnOS Docker 镜像下载加速教程

在飞牛fnOS系统中配置轩辕镜像加速

📱

极空间 NAS Docker 镜像下载加速教程

在极空间NAS中配置轩辕镜像加速

⚡

爱快路由 ikuai Docker 镜像下载加速教程

在爱快ikuai系统中配置轩辕镜像加速

🔗

绿联 NAS Docker 镜像下载加速教程

在绿联NAS系统中配置轩辕镜像加速

🌐

威联通 NAS Docker 镜像下载加速教程

在威联通NAS系统中配置轩辕镜像加速

📦

Podman Docker 镜像下载加速教程

在 Podman 中配置轩辕镜像加速,支持多系统

📚

ghcr、Quay、nvcr、k8s、gcr 等仓库下载镜像加速教程

配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤

🚀

专属域名方式进行 Docker 镜像下载加速教程

无需登录即可使用轩辕镜像加速服务,更加便捷高效

需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429

商务:17300950906
|©2024-2025 源码跳动
商务合作电话:17300950906|Copyright © 2024-2025 杭州源码跳动科技有限公司. All rights reserved.