Go build:构建输出“api”已经存在并且是一个目录

use*_*190 5 go docker dockerfile

我正在尝试使用 CompileDaemon 来使用 Docker 热重载 go 项目。

我的文件夹结构如下所示

my-api
 - server
   - main.go
 - Dockerfile
 - docker-compose.yml
 - Makefile
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误:

go build github.com/firstApi/test-platform/lib/my-api/server: build output "server" already exists and is a directory

这就是我的 dockerfile 的样子

FROM golang:1.12-stretch

ENV GO111MODULE=on
WORKDIR /go/src

COPY go.mod .
COPY go.sum .
RUN go mod download

COPY . .

RUN ["go", "get", "github.com/githubnemo/CompileDaemon"]

RUN go test ./... \
&& CGO_ENABLED=0 go build -v -a -installsuffix cgo -o /main server/main.go

ENTRYPOINT CompileDaemon -log-prefix=false -build="go build ./server" -command="./main"
Run Code Online (Sandbox Code Playgroud)

有什么想法我做错了什么以及我需要改变什么才能解决这个问题吗?

更新*****

我尝试了唯一答案所建议的解决方案,但现在出现以下错误:

Could not start command:%!(EXTRA *errors.errorString=can't start command: fork/exec ./server: permission denied)
Run Code Online (Sandbox Code Playgroud)

gra*_*ant 4

您的默认 go build 正在尝试输出与目录相同的名称。您可以更改构建和 ENTRYPOINT 行以引用“go build -o apiserver”。