goland 不支持一键构建推送镜像,需通过 run configuration 调用 docker cli:新建 shell script 类型配置,填写 docker build -t myapp:latest . 和 docker tag ... && docker push ... 命令;推送前须配置 docker daemon 信任私有 registry(如添加 insecure-registries)、执行 docker login,并确保 dockerfile 中显式设置 goproxy/goprivate 以同步私有模块。

GoLand 本身不提供“一键构建并推送镜像”的内置功能,所有镜像构建和推送动作必须由外部工具(docker CLI 或自定义脚本)完成;GoLand 只能通过 Run Configuration 触发这些命令,且需手动配置环境、认证与路径。
如何在 GoLand 中设置 Run Configuration 调用 docker build 和 docker push
GoLand 的 Run Configuration 支持执行 Shell 命令,这是最轻量、最可控的集成方式。关键不是“自动”,而是“可复现地触发”。
- 打开 Run → Edit Configurations…,点击
+→ 选择Shell Script - Script path 填写一个本地脚本(如
./scripts/build-and-push.sh),或直接在Script text区域写两行命令:
docker build -t myapp:latest . docker tag myapp:latest localhost:5000/myapp:latest && docker push localhost:5000/myapp:latest
注意:localhost:5000 必须是已运行的私有 registry 地址;若 registry 启用了认证,必须提前执行 docker login localhost:5000,否则 push 会失败并报错 unauthorized: authentication required。
docker push 失败常见原因及绕过 HTTPS 强制要求
Docker 默认拒绝向 HTTP 协议的 registry 推送镜像,这是硬性安全限制,无法在 GoLand 侧绕过,必须在 Docker daemon 级别配置信任。
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 编辑
/etc/docker/daemon.json(Linux/macOS)或 Docker Desktop Settings → Docker Engine(Windows/macOS),添加 insecure registries:
{
"insecure-registries": ["localhost:5000"]
}
保存后重启 Docker daemon(sudo systemctl restart docker 或重启 Docker Desktop);否则无论 GoLand 怎么配置,push 都会卡在 denied: requested access to the resource is denied。
- 如果 registry 地址是域名(如
registry.internal),还需确保该域名能被解析——不能只靠/etc/hosts映射,Docker daemon 启动时会做 DNS 检查,建议用localhost或明确 IP
为什么不用 GoLand 内置的 Docker 插件做构建?
GoLand 的 Docker 插件(需启用)仅支持连接远程容器、查看日志、执行命令,**不支持从当前项目根目录触发 docker build**。它无法读取你项目里的 Dockerfile 并自动推送到私有仓库,也不处理 docker tag 和认证逻辑。
- 插件适合调试运行中的容器,不适合 CI/CD 流水线式构建
- 若强行用插件“Build image”,它会尝试用默认上下文(通常是空目录)构建,导致
no such file or directory: Dockerfile - 所有构建参数(如
--build-arg、多阶段 target)仍需手写在 Run Configuration 中,不如直接调用 CLI 清晰
推送前必须确保 go mod 与镜像内容一致
GoLand 默认使用本地 GOPATH 或模块缓存拉取依赖,但 docker build 是独立上下文,不会继承 IDE 的 GOPROXY 或 GOPRIVATE 设置。若项目引用了私有模块,镜像构建会失败。
- 在
Dockerfile的构建阶段,显式设置环境变量:
ENV GOPROXY=https://goproxy.io,direct ENV GOPRIVATE=git.company.com
- 若使用 SSH 认证私有 Git,需在构建阶段挂载
~/.ssh(不推荐)或改用 HTTPS + Token 方式,并在git config中预设凭据 - 验证方式:在容器内手动运行
go mod download,看是否报permission denied或no matching versions
最容易被忽略的是:GoLand 的“自动下载依赖”行为和 Docker 构建完全隔离,镜像里缺模块,IDE 里却一切正常——直到你 push 后在另一台机器上 docker run 才暴露问题。










