我试图让一个在 cmd 行上运行的 golang 程序在 docker 容器中运行,但是导入 archive/tar 会导致错误。
这有效:
package main
import (
"fmt"
)
func main() {
fmt.Println("success!")
}
产生输出:
liam gotest $ docker run -it gotest
success!
这不会:
package main
import (
"archive/tar"
"fmt"
)
var _ = tar.TypeReg
func main() {
fmt.Println("success!")
}
产生输出:
liam gotest $ docker run -it gotest
standard_init_linux.go:207: exec user process caused "no such file or directory"
这是我的 Dockerfile:
FROM scratch
WORKDIR /app
COPY . /app
CMD ["./test"]
我在跑:
go version go1.11.4 linux/amd64
Docker version 18.09.1, build 4c52b90
ubuntu 18.04LTS
我将不胜感激任何建议。
由 vishnu narayanan 解决:
我用了
`CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo test.go`
构建一个静态可执行文件,它成功了。
墨色风雨
相关分类