【Golang】企业内网/专网离线搭建Go环境实战指南
背景说明
随着数据泄露问题日益严重和大模型的快速发展,越来越多的公司将研发环境迁移至内网甚至专网。而由于网络限制或安全策略,直接访问外部资源(如Go模块仓库)可能会受到限制。这就需要我们在公司内网中搭建一个离线的Go语言开发环境,以确保能够顺利地进行项目开发。
对于整个公司来说nexus可能是更好的选择。作为开发人员在我司实际使用中却感觉诸多不便,其中依赖的缺失就是一大问题,即使可以手动导包,往往直接依赖和间接依赖的手动导入也非常繁琐,需要先到外网将所有依赖下载,然后再到内网一个个手动导入。既然在外网已经下载了需要的依赖,那么直接使用外网的依赖制作内网无需再导入依赖的Go环境是不是可以呢。本文将以此来展开演示。
鉴于当前大多数应用程序都采用Docker进行部署,本文将主要以Docker的形式演示如何在公司内网中创建一个离线的Go语言开发环境。我们将介绍所需的工具、配置步骤以及注意事项。希望本文能为您在公司内网中搭建Go语言离线环境提供参考。
下载Golang构建镜像
建议使用最新版本,不单性能提升,漏洞也会有修复
代码语言:javascript代码运行次数:0运行复制docker pull golang:1.24.2-alpine3.21
下载需要的依赖
- 外网可以建一个demo项目,将内网或者专网用的的
go.mod
在demo中写一份。外网配置代理,然后执行
go mod tidy
将所有的依赖下载到本地
- 切换到windows电脑
go-mod
目录上一级,linux:/root/go/pkg/
通过go env
查看GOMODCACHE
对应的值
cd C:\Users\Administrator\go\pkg\ # 切换到GOMODCACHE对应目录的上一级
离线镜像制作
编写Dockerfile
Dockerfile,联网环境,上一步获取镜像可不做,根据
代码语言:javascript代码运行次数:0运行复制# syntax=docker/dockerfile:1.4
ARG GO_VERSION=1.24.2
ARG ALPINE_VERSION=3.21
ARG PLATFORM=amd64
# 使用多平台构建
FROM --platform=${PLATFORM} golang:${GO_VERSION}-alpine${ALPINE_VERSION}
COPY mod /go/pkg/mod
ENV GOSUMDB=off
# 下一行按实际配置,也可以不配置
# ENV GOPROXY=,direct
将Dockerfile放置于GOMODCACHE目录:
默认目录如下:
- linux:
/root/go/pkg/
- Windows:
C:\Users\Administrator\go\pkg\
执行构建镜像
- arm64
docker build -t golang-arm:1.24.2-alpine3.21 --platform=linux/arm64 .
- amd64/x86
docker build -t golang-amd:1.24.2-alpine3.21--platform=linux/amd64 .
内网使用
开发电脑
直接将外网mod
拷贝到开发环境电脑,然后配置
go env -w GOSUMDB=off
go env -w GOPROXY=,direct
Dockerfile
代码语言:javascript代码运行次数:0运行复制# 多阶段构建
#构建一个 builder 镜像,目的是在其中编译出可执行文件mck
#构建时需要将此文件放到代码根目录下
FROM golang-amd:1.24.2-alpine3.21
ADD . /build/src
WORKDIR /build/src
#去掉了调试信息 -ldflags="-s -w" 以减小镜像尺寸
RUN go env -w GO111MODULE=on \
&& go env -w CGO_ENABLED=0 \
&& go env \
&& go mod tidy \
&& go build -ldflags="-s -w" -o ha/build/src/cmd/ha/main.go
FROM alpine:3.21
#更新软件源 使用挂载卷挂载 /etc/localtime:/etc/localtime做宿主机时间映射
#RUN apk update --no-cache && apk add --no-cache tzdata \
# && apk add --no-cache docker-cli
##设置本地时区,这样我们在日志里看到的是北京时间了
#ENV TZ Asia/Shanghai
WORKDIR /home
COPY --from=builder /build/src/config/config.yml /home/config/config.yml
COPY --from=builder /build/src/ha /home/ha
CMD ["./ha"]
EXPOSE 9680
总结
本文介绍了在内网环境中搭建离线Go开发环境的方案。为应对网络限制导致的依赖管理问题,使用Docker在外网下载所有依赖后,制作包含这些依赖的镜像,迁移到内网使用。通过多平台构建(如amd64和arm64)确保兼容性,利用Docker的镜像机制快速搭建环境,提升开发效率。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。原始发表:2025-04-09,如有侵权请联系 cloudcommunity@tencent 删除go企业镜像开发环境配置发布者:admin,转转请注明出处:http://www.yc00.com/web/1747744600a4689374.html
评论列表(0条)