Go build: сборка вывода "api" уже существует и является каталогом - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь использовать CompileDaemon для горячей перезагрузки проекта go с помощью Docker.

Структура моей папки выглядит следующим образом

my-api
 - server
   - main.go
 - Dockerfile
 - docker-compose.yml
 - Makefile

Это ошибка, которую я получаю:

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"

есть идеи, что я делаю неправильно и что мне нужно изменить, чтобы решить эту проблему?

UPDATE *****

Я попробовал решение в соответствии с единственным ответом, но теперь я получаю следующую ошибку:

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

1 Ответ

1 голос
/ 30 мая 2019

Ваша стандартная сборка go пытается вывести то же имя, что и каталог. Вы можете изменить свою сборку и строку ENTRYPOINT, указав "go build -o apiserver".

...