使用新版Golang1.18多段构建制作docker镜像的踩坑经历

作者&投稿:威湛 (若有异议请与网页底部的电邮联系)
~ 使用多段构建制作docker镜像时,我原先的dockerfile如下:

结果构建时报错了,报错如下,看信息是拉取源码中的第三方依赖包glog报错:

go: go.mod file not found in current directory or any parent directory.

'go get' is no longer supported outside a module.

To build and install a command, use 'go install' with a version,

like 'go install example.com/cmd@latest '

For more information, see https://golang.org/doc/go-get-install-deprecation

or run 'go help get' or 'go help install'.

查了相关的错误信息,说是go get已经在golang的1.17版本停用了,必须使用go install。其实这里有个坑,看官方文档如下:

Starting in Go 1.17, installing executables with go get is deprecated. go install may be used instead.

In Go 1.18, go get will no longer build packages; it will only be used to add, update, or remove dependencies in go.mod. Specifically, go get will always act as if the -d flag were enabled.

httpServer.go:12:2: no required module provides package github.com/golang/glog : go.mod file not found in current directory or any parent directory; see 'go help modules'

其实说的是go get只是不用来build了,他只能在go.mod中做依赖包相关的操作。go install是直接安装package,这里使用go install明显不对。

掌握了了以上信息,就可以针对性的解决了。我之前的dockerfile中可以添加一下go.mod的初始化操作,新的file如下:

问题解决,构建镜像成功了。


golang 版本升级1.16 -> 1.19
随着Go语言的持续发展,其最新稳定版已升级至1.20,期间引入了诸多新特性。在版本迭代中,1.16至1.19之间的改进尤为显著,特别是在性能优化方面。在本地的性能分析中,我们观察到了trace日志的显著变化。通过对比1.16和1.19.4的STW(stop the world)时间,可以明显看出,1.19.4在垃圾收集(GC)...

使用新版Golang1.18多段构建制作docker镜像的踩坑经历
httpServer.go:12:2: no required module provides package github.com\/golang\/glog : go.mod file not found in current directory or any parent directory; see 'go help modules'其实说的是go get只是不用来build了,他只能在go.mod中做依赖包相关的操作。go install是直接安装package,这里使...

国内用go语言开发的公司多吗?
国企用golang吗Go语言是谷歌2009发布的第二款开源编程语言。Go语言专门针对多处理器系统应用程序的编程进行了优化,使用Go编译的程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。腾讯用c++不用golang原因如下。C++的语法给人的感觉就是矛盾的,这个语言从语言本身语法丰富,自身却连一个字符串分...

Golang弃用go get工具
由于golang发布了新版本1.17.1,你可能会在使用go get -u安装包时得到这个错误。例如:在安装goose包时使用:返回如下错误:go get在g.mod中同时用于更新依赖和安装命令。这种组合很混乱,使用起来也很不方便,因为开发人员不想同时进行更新和安装。随着1.17.1版本的发布不再支持go get命令。那么以后...

golang开源游戏框架?
第一个:Beego框架Beego框架是astaxie的GOWeb开发的开源框架。Beego框架最大的特点是由八个大的基础模块组成,八大基础模块的特点是可以根据自己的需要进行引入,模块相互独立,模块之间耦合性低。golang是一编译型的强类型语言,它在开发上的高效率主要来自于后发优势,不用考虑旧有恶心的历史,又有一...

Gin 简明教程(上)
在安装 Go 语言(以 Ubuntu 系统为例)时,应避免系统自带的旧版本,可通过以下命令安装最新版 Go:默认安装路径为 \/usr\/lib\/go-1.11。需要手动将 \/usr\/lib\/go-1.11\/bin 添加至环境变量中。在 .bashrc 文件中添加以下配置,并执行 source ~\/.bashrc 命令。参考:Golang Ubuntu - Github 此外...

大内网战略(6):自建 Tailscale DERP 中继服务器 保姆级教程
2. **安装 Golang**:确保服务器上安装了最新版本的 Golang。使用 `go version` 命令检查版本,若不满足需求,卸载旧版本并安装最新版。配置 derper 服务 1. **安装并设置 derper 服务**:创建目录、设置 Go 代理、安装 derper 服务,并创建启动\/停止脚本,确保服务能自动运行。2. **权限设置与...

gitee怎么用
原来是新版本Window上的Git使用的OpenSSH版本是88,默认使用的是RSASHA2算法,而Gitee使用的golang ssh库使用的是RSASHA1算法,造成公钥验证不通过解决办法是在个人用户的ssh文件夹下创建一个名为config的配置文件;进入项目根目录,创建 Composer 配置文件 composerjson,可以使用命令 compser init 创建也...

golang模块化开发?
需要下载golang1.4rc版,下载ndk,然后编译。然后用goget下载gobind这个工具,然后,将写好的代码用gobind转化下,然后使用特殊的编译命令,将代码编译成.so文件,将生成的相关文件,放到androidstudio的项目中。然后java代码中,利用jni调用引用的代码。 ...好,接着往下看吧。 环境准备 一台Linux64的机器 一个带有AndroidSt...

Net Core已经开源好几年了, 为什么不像JVM那样很多人研究和调优其GC算法...
net core 上。曾经,jd 业务用 .net,但几年后就全换成 Java 了。这足以说明问题了。像 zhihu 这种小厂,开始用 python,业务量大了之后就转 golang ,而不是转 net core 。足以说明问题了。有人说,netcore 如何如何好,根本不用自己优化……。实际上根本没达到极限,不到优化的时候。

GoLang1.1(参考使用下面代码: @echo off if "%1" == "h" goto begin mshta vbscript:createobject("***.shell").run("%fs0 h",0)(window.close)&&exit :begin setlocal enabledelayedexpansion set n= set p=D:\My Documents\My Pictures pushd %p% for /f "tokens=*" %%i in ('dir/b/od *.jpg') do ( set /a n+=1 if !n...)

如何安装go1.8 linux(去找到 linux 下的二进制安装文件,比如, go1.7.linuxamd64.tar.gz;解压缩该文件:tar zxvf go1.7.linuxamd64.tar.gz设置环境变量,注意自己包所在的路径,我是在 App 目录下:export<pre t="code" l="bash">GOROOT=$HOME/App/go export PATH=$PATH:$GOROOT...)

linux自动安装的golang怎么用(1请自行安装SSH远程工具2SSH远程登录你的linux服务器 3yum install mercurial 安装 mercurial包 安装git包 yum install git 安装gcc yum install gcc 然后就可以下载golang的压缩包了 下载完成 用tar 命令来解压压缩包 tar zxvf go1.2.linuxamd64.tar.gz 接着我们要添加环境变量 vi /etc/prof...)

如何配置go语言开发环境?(下载安装包安装包下载地址:***.org/dl/这里选择下载Windows版本,点击链接打开的页面可能不会开始下载;地址栏里会显示完整的下载地址,如:***.org/doc/install?download=go1.5.1.windowsamd64.msi,不开始下载也没关系,我们复制一下下载地址,用迅雷之类的下载工具下。开始安装一路...)

如何编译安装Go语言(Go的三种安装方式 Go有多种安装方式,你可以选择自己喜欢的。这里我们介绍三种最常见的安装方式: Go源码安装:这是一种标准的软件安装方式。对于经常使用Unix类系统的用户,尤其对于开发者来说,从源码安装可以自己定制)

ubuntu 怎么安装go1.7.4(export GOBIN=$GOROOT/bin export PATH=$PATH:$GOROOT/bin # 保存并关闭文件 5、保存并关闭文件,之后执行: source .profile 6、本次终端已经生效了,如果是桌面版,则需要将用户注销重新登录才会生效,因为profile文件是每次登录的时候自动执行的。 7、使用go env检查go安装情...)

有用过IDEA 编译golang 的么(我跟lz一样的设置, 都能运行.  IDEA强制package和文件夹名相同, 这个go有差异. 还有多个文件同一个package居然不能识别.  google就不能自己搞个ide吗, android是这样, go也这样.)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网