HowTo Golang debug in docker

Documentation Develop
Develop Go Debug Docker

Golang-debug-for-u4u

1 docker-compose.xml file for photod service

  photod:
    restart: on-failure
    image: gcr.io/u4u-project/photod:photos
    cap_add:
    - SYS_PTRACE
    security_opt:
    - seccomp:unconfined
    cpu_shares: 768
    cpuset: 0-2
    env_file: .env
    links:
      - mongo-photod
      - rabbitmq
      - redis-photorec
    volumes_from:
      - wa
    ports:
      - "40000:40000"

2. New Dockerfile with dlv

FROM gcr.io/u4u-project/golibs:photos

ENV CGO_ENABLED 0

RUN mkdir -p /go/src/worker_manager
WORKDIR /go/src/worker_manager

COPY go/src/worker_manager /go/src/worker_manager

COPY U4U-Project-7df5490b7a38.json /go/src/worker_manager

ENV GOOGLE_APPLICATION_CREDENTIALS=/go/src/worker_manager/U4U-Project-7df5490b7a38.json

#RUN go build -o photod .
RUN go build -gcflags "all=-N -l" -o photod .

#RUN mkdir /var/photos

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

# Port 40000 belongs to Delve
EXPOSE 40000

#CMD /go/src/worker_manager/photod

# Run delve
CMD ["/go/bin/dlv", "--listen=:40000", "--headless=true", "--api-version=2", "--accept-multiclient" ,"exec", "/go/src/worker_manager/photod"]

3. Add GOPATH for project

Example:

/home/airat/PycharmProjects/photod/go

4. Go remote configure port 40000