远程调试 golang 应用
步骤
STEP1: 编写 Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15FROM golang:1.16 AS build-env
# Build Delve
RUN go get github.com/go-delve/delve/cmd/dlv
COPY . /app
WORKDIR /app
RUN go mod download
EXPOSE 40000
ENTRYPOINT ["dlv", "--listen=:40000", "--headless=true", "--api-version=2", "--accept-multiclient", "debug", "/app/cmd/"]注:这里是把代码全部复制到进行中,也可以只复制编译好的文件。如果是编译好的文件,编译的时候需要设置
-gcflags "all=-N -l"
STEP2: 编译 docker 镜像
1
docker build -f docker/Dockerfile.debug -t qlcchain/go-qlc:debug .
STEP3: 启动 docker 容器并绑定端口
1
2
3docker run --rm -it -p 40000:40000 qlcchain/go-qlc:debug \
--build-flags="-tags=testnet" \
-- --configParams="rpc.rpcEnabled=true;p2p.discovery.mDNSEnabled=false"注:通过
--build-flags
指定编译参数;--
指定传给 app 的参数STEP4: 在 Goland 中连接容器
注:除了 Goland 外,还有一些其他的 GUI 可以选择
参考链接
- delve
---EOF---