继续安装无法在Dockerfile中找到我的内部软件包

时间:2018-07-18 22:07:01

标签: docker go dockerfile

因此,我正在尝试对如下所示的项目进行Docker化:

project/
  main.go
  package1/
  package2/
  package3/

它还需要一些外部软件包,例如github.com/gorilla/mux 注意我的项目在github.company.com域内部,所以我不确定这是否重要。 所以这是我的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 个答案:

答案 0 :(得分:1)

哇,golang对路径确实很挑剔!只是我将工作目录分配到了错误的位置。树中还有另一个文件:

WORKDIR /go/src/github.company.com/COMPANY/project-repo/project

答案 1 :(得分:-1)

您在设置mkdir的值之前是否做了(WORKDIR)?