簡體   English   中英

帶有Go的Dockerfile找不到路徑

[英]Dockerfile with Go can't find path

我在運行本地版本以及配置Dockerfile時遇到問題。

我的項目結構如下:

project
- cmd
  main.go
- internal
  - app
    app.go
Dockerfile

所以,在main.go我說

import (
    "project/internal/app"
)

然后,當我說go build我可以在本地完美運行。

但是,在我的Dockerfile中,我說

FROM golang
ENV GOPATH /go/src/github.com/project
COPY . /go/src/github.com/project
WORKDIR /go/src/github.com/project
RUN make linux

我得到的問題:

cmd/main.go:4:2: cannot find package "Slaxtract/internal/app" in any of:
    /usr/local/go/src/project/internal/app (from $GOROOT)
    /go/src/github.com/project/src/project/internal/app (from $GOPATH)

Docker為什么要將src添加到GOPATH中? 以及如何配置它以找到正確的位置?

如果我將main.go更改為相對路徑,我可以破解一個補丁-但是我無法在本地運行

main.go:4:2: local import "../internal/app" in non-local package

任何和所有幫助將不勝感激。

默認情況下,Go希望在GOPATH找到srcpkgbinGOPATH文件夾。 但是,實際上是將其指向項目文件夾。 要修復它,您只需將GOPATH指向/go

所以你的Dockerfile應該看起來像

FROM golang
ENV GOPATH /go
COPY . /go/src/github.com/project
WORKDIR /go/src/github.com/project
RUN make linux

您可以在此處找到有關GOPATH更多信息。 如果您對GOPATH感到厭倦,可以嘗試使用gomodules

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM