所以我正在尝试Dockerize我的项目,如下所示:
project/
main.go
package1/
package2/
package3/
并且它还需要一些外部软件包,例如github.com/gorilla/mux注意我的项目是github.company.com域内部的,所以我'm not sure if that matters. So here'是我的Dockerfile,是的,我的GOPATH和GOROOT设置了,请不要只是告诉我读https://golang.org/doc/code.html . 我已经和我仍然有这个问题 .
### STAGE 1: Build ###
FROM golang:1.10 as builder
WORKDIR /go/src/github.company.com/project-repo/project
COPY . .
RUN go get
RUN go install <- ERROR HERE
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o executable -a -installsuffix cgo .
### STAGE 2: Setup ###
FROM python:3.6-alpine
COPY --from=builder /go/src/github.company.com/project-repo/project/executable /api/executable
CMD ["/api/executable"]
然后我跑:
docker build -t myapp .
并得到此错误:
main.go: cannot find package github.company.com/project-repo/project/package1 in any of:
/usr/local/go/src/github.company.com/project-repo/project/package1 (from $GOROOT)
/go/src/github.company.com/project-repo/project/package1 (from $GOPATH)
请记住这些路径是正确的 . 为什么不能去安装自己内部的软件包? Main.go导入package1,但是肯定的是“go install”不会在自己内部安装包 .
2 回答
哇,golang对路径真的很挑剔!只是我把工作目录分配到了错误的地方 . 树中还有另一个文件:
在设置它的值之前你做了
WORKDIR
(mkdir
)吗?