我的Dockerfile位于src/myapp文件夹的根目录中,myapp包含myapp.go在主包中。
src/myapp
myapp
myapp.go
Dockerfile 看起来如下:
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)
我究竟做错了什么?ls码头工人完成后可以登录命令ADD吗?
ls
ADD
您正在将所有文件复制到Image根目录,未安装任何依赖项,尝试构建它,然后从运行二进制文件/go/bin/app。该目录中不存在二进制文件,并且正在生成错误。
/go/bin/app
我建议使用这样的Dockerfile,
FROM golang:1.9.2 ADD . /go/src/myapp WORKDIR /go/src/myapp RUN go get myapp RUN go install ENTRYPOINT ["/go/bin/myapp"]
这将执行以下操作。
/go/src/myapp
您可以使用运行ls命令或任何其他命令docker exec。
docker exec
例:
docker exec <image name/hash> ls
您还可以在生成的图像中输入外壳以使用
docker run --rm -it <image hash/name> /bin/sh