首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Go的Dockerfile找不到路径

带有Go的Dockerfile找不到路径
EN

Stack Overflow用户
提问于 2019-05-20 14:28:32
回答 1查看 1.2K关注 0票数 0

我在运行本地构建以及配置Dockerfile时遇到了问题。

我的项目结构如下:

代码语言:javascript
复制
project
- cmd
  main.go
- internal
  - app
    app.go
Dockerfile

所以,在main.go里我说

代码语言:javascript
复制
import (
    "project/internal/app"
)

然后,当我说go build时,我可以在本地完美地运行。

然而,在我的Dockerfile中我说

代码语言:javascript
复制
FROM golang
ENV GOPATH /go/src/github.com/project
COPY . /go/src/github.com/project
WORKDIR /go/src/github.com/project
RUN make linux

我知道问题是:

代码语言:javascript
复制
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要在GOPATH中加入src呢?我怎样才能把它配置成正确的位置呢?

如果我将我的main.go更改为相对路径,我就可以破解一个修复程序,但是我不能在本地运行

代码语言:javascript
复制
main.go:4:2: local import "../internal/app" in non-local package

任何和所有的帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-20 14:35:24

默认情况下,Go希望在srcpkgbin等文件夹中找到GOPATH。但是,您将它指向实际上您的项目文件夹。要修复它,只需将GOPATH指向/go

所以你的Dockerfile应该看起来像

代码语言:javascript
复制
FROM golang
ENV GOPATH /go
COPY . /go/src/github.com/project
WORKDIR /go/src/github.com/project
RUN make linux

您可以找到关于GOPATH 这里的更多信息。如果你厌倦了GOPATH,你可以试试格模

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56223019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档