【发布时间】:2018-05-29 22:44:28
【问题描述】:
我的 Dockerfile 位于带有 src/myapp 文件夹的目录的根目录中,myapp 包含带有主包的 myapp.go。
Dockerfile 如下所示:
FROM golang:1.9.2
ADD . /
RUN go build myapp;
ENTRYPOINT ["/go/bin/myapp"]
我收到以下错误:
can't load package: package myapp: cannot find package "myapp" in any of:
/usr/local/go/src/myapp (from $GOROOT)
/go/src/myapp (from $GOPATH)
我做错了什么?在 docker 完成ADD 之后,我可以记录ls 命令吗?
【问题讨论】:
-
答案是正确的,因为您需要确保您的应用程序正确复制到 go 路径中。但是,这假设您已经出售了所有依赖项 - 如果没有,您可能需要
go get或 dep 以确保这些依赖项可用。但是,如果目标是使您的二进制文件可移植,那么在 docker 之外为 linux 编译、复制二进制文件然后从头开始构建轻量级容器可能是一种更好的方法,因为您不会无意中在应用程序中发布所有源代码.