供应商/数据库在Docker映像中找不到包

供应商/数据库在Docker映像中找不到包,docker,docker-compose,dockerfile,Docker,Docker Compose,Dockerfile,我在GO中编写了一个简单的应用程序,使用postges我有这个文件夹结构 |--- Dockerfile |--- api.go |--- vendor/ database/ init.go 这是我的文件 FROM golang:1.9 ARG app_env ENV APP_ENV $app_env COPY . . WORKDIR /project RUN go get ./vendor/database RUN go g

我在GO中编写了一个简单的应用程序,使用postges我有这个文件夹结构

  |--- Dockerfile 
  |--- api.go 
  |--- vendor/ 
         database/
            init.go
这是我的文件

FROM golang:1.9

ARG app_env
ENV APP_ENV $app_env

COPY . .
WORKDIR /project

RUN go get ./vendor/database

RUN go get ./
RUN go build

CMD if [ ${APP_ENV} = production ]; \
    then \
    api; \
    else \
    api; \
    fi

EXPOSE 8080
在编写docker compose时,我遇到以下错误:

错误消息


项目结构哪里出了问题?

您正在使用“复制”命令将源文件复制到基本映像的默认目录中。。然后使用WORKDIR/project将/project作为工作目录。因此,当您运行go-get./vendor/database时,该命令实际上是在不存在的/project/vendor/database中运行的。切换复制和WORKDIR的顺序,如下所示

WORKDIR /project
COPY . .

供应商/数据库是否可能位于/go而不是/project中?也许可以尝试交换你的副本和WORKDIR。你能分享你的init.go的内容吗?关于副本和Workır的问题。我交换了,它工作了。你是对的,我交换了,它工作了。谢谢:如果它解决了你的问题,请接受答案。
WORKDIR /project
COPY . .