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



我正在用 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 撰写时,我收到此错误:

错误信息

Step 6/10 : RUN go get ./vendor/database
---> Running in 459740ba584c
can't load package: package ./vendor/database: cannot find package "./vendor/database" in:
/project/vendor/database
Service 'api' failed to build: The command '/bin/sh -c go get ./vendor/database' returned a non-zero code: 1

项目结构哪里出了问题?

使用命令将源复制到基本映像的默认目录COPY . .。然后,您将/project作为具有WORKDIR /project的工作目录。所以当你运行RUN go get ./vendor/database时,命令实际上是在不存在的/project/vendor/database中运行的。切换 COPY 和 WORKDIR 的顺序如下

WORKDIR /project
COPY . .

最新更新