【问题标题】:Go install can't find my internal packages in DockerfileGo install 在 Dockerfile 中找不到我的内部包
【发布时间】:2018-07-18 22:07:01
【问题描述】:

所以我正在尝试 Dockerize 我的项目,看起来像这样:

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”不会在自身内部安装包..

【问题讨论】:

  • 运行docker build时,你是否在project目录下,Dockerfile也在吗?在COPY 之后将RUN ls 添加到Dockerfile 是否会提供任何有用的建议?
  • 是的,我在 main 项目中,除了 main.go 之外,它确实生成了 Dockerfile 和 Makefile 以及 package1/、package2/,这反映在 ls 中
  • main.go中的import是否指定了这样的路径:import github.company.com/project-repo/project/package1?
  • 是的,是的!这对你有帮助吗?
  • 我试过 /go/src/github.company.com/project-repo/project/package1。也许我需要删除 /go/src?

标签: docker go dockerfile


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    在设置其值之前,您是否创建了(mkdirWORKDIR

    【讨论】:

      猜你喜欢
      • 2022-07-12
      • 2021-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      • 2017-10-01
      相关资源
      最近更新 更多