Отладчик GoLand не останавливается в исходном коде во время отладки кода go в контейнере Docker - PullRequest
0 голосов
/ 08 ноября 2018

Я использую:

Mac os High sierra 10.13.6
Docker Community Edition 18.06.1-ce
GoLand 2018.2.3
Go 1.11.1 (installed by brew at /usr/local/Cellar/go/1.11.1/libexec

enter image description here Я следую инструкциям на https://blog.jetbrains.com/go/2018/04/30/debugging-containerized-go-applications/ для удаленной отладки кода go, выполняемого в Docker-контейнере из GoLand IDE.

Однако отладчик не останавливается на исходном коде при вызове http://localhost:8080

enter image description here

Если я использую Dockerfile.1, я вижу эту ошибку при запуске контейнера:

Could not create config directory: user: Current not implemented on linux/amd64.

Если я использую Dockerfile.2, я не вижу ошибок при запуске контейнера.

Однако отладчик не останавливается ни на каких точках останова в источнике.

---- Dockerfile.1 ----

FROM golang:1.10.1-alpine3.7 AS build-env
ENV CGO_ENABLED 0
ADD . /go/src/hello

RUN go build -gcflags "all=-N -l" -o /server hello

RUN apk add --no-cache git
RUN go get github.com/derekparker/delve/cmd/dlv

FROM alpine:3.7

EXPOSE 8080 40000

RUN apk add --no-cache libc6-compat

WORKDIR /

COPY --from=build-env /server /
COPY --from=build-env /go/bin/dlv /

CMD ["/dlv", "--listen=:40000", "--headless=true", "--api-version=2", "exec", "/server"]

---- Dockerfile.2 ----

FROM golang:1.10.1-alpine3.7 AS build-env
ADD . /go/src/hello

RUN apk add --no-cache libc6-compat build-base

RUN go build -gcflags "all=-N -l" -o /server hello

RUN apk add --no-cache git
RUN go get github.com/derekparker/delve/cmd/dlv

FROM alpine:3.7

EXPOSE 8080 40000

RUN apk add --no-cache libc6-compat

WORKDIR /

COPY --from=build-env /server /
COPY --from=build-env /go/bin/dlv /

CMD ["/dlv", "--listen=:40000", "--headless=true", "--api-version=2", "exec", "/server"]
...