带有Go-can'的Dockerfile;我找不到路
我在运行本地构建和配置Dockerfile时遇到问题 我的项目结构如下所示:带有Go-can'的Dockerfile;我找不到路,docker,go,Docker,Go,我在运行本地构建和配置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/pr
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
中找到src
、pkg
和bin
等文件夹。但是,实际上您正在将其指向您的项目文件夹。
要修复它,只需将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
,您可以尝试一下默认情况下,Go希望在GOPATH
中找到src
、pkg
和bin
等文件夹。但是,实际上您正在将其指向您的项目文件夹。
要修复它,只需将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
,您可以尝试一下还请注意,使用此目录结构,您的Go包名称应以“github.com/project/…”
@DavidMaze-package-name开头。您的意思是,使用此目录结构,您的Go包名称应以“github.com/project/…”开头
@DavidMaze导入时的软件包名称是什么意思