
alexfalkowski/go-service-template该镜像为Go服务开发提供标准化Docker模板,集成Go语言开发与运行时环境的最佳实践,旨在帮助开发者快速实现Go服务的容器化,减少环境配置工作量,专注于业务逻辑开发。
bashmkdir -p my-go-service && cd my-go-service touch main.go Dockerfile
main.go)gopackage main import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "Hello from Go service!") }) port := ":8080" fmt.Printf("Service starting on %s\n", port) http.ListenAndServe(port, nil) }
dockerfile# 阶段1: 使用模板镜像构建应用 FROM [模板镜像名称]:latest AS builder WORKDIR /app COPY . . RUN go mod download RUN CGO_ENABLED=0 GOOS=linux go build -o app . # 阶段2: 构建运行镜像 FROM alpine:latest WORKDIR /app COPY --from=builder /app/app . EXPOSE 8080 CMD ["./app"]
bashdocker build -t my-go-service . docker run -p 8080:8080 my-go-service
yamlversion: '3.8' services: go-service: build: context: . dockerfile: Dockerfile ports: - "8080:8080" environment: - GOPROXY=[***] # 配置国内代理加速依赖下载 - APP_ENV=production # 指定运行环境 restart: unless-stopped
| 变量名 | 描述 | 默认值 |
|---|---|---|
GOPROXY | Go模块代理地址 | [***] |
GO111MODULE | 是否启用Go模块支持 | on |
CGO_ENABLED | 是否启用CGO(影响依赖链接) | 0(生产环境默认禁用动态链接) |
APP_PORT | 应用监听端口 | 8080 |
APP_ENV | 应用运行环境标识(dev/prod) | dev |
可通过--build-arg调整构建行为:
GO_VERSION:指定基础Go镜像版本(如1.21.0),默认使用最新稳定版TARGET_PLATFORM:指定构建目标平台(如linux/amd64、linux/arm64)LDFLAGS:传递给go build的链接参数(如-s -w减小二进制体积)CGO_ENABLED=1并确保基础镜像包含对应编译器
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务