🔖
delevでデバッグできるようにしてみる
背景
こちらの続き。
デバッガを入れられると開発効率が上がるでの、delveを入れてみる。
環境
Windows11
vscode
docker desktop 4.17.1
実際に入れてみる
今までのコードをちょっと修正すればいけるはず。
Go Toolsのインストール、アップデート
デバック設定を作成
vscodeの「実行とデバック」から「launch.jsonファイルを作成します。」をクリック
「Docker:Drbug in Container」をクリック
launch.jsonを以下に編集
{
"version": "0.2.0",
"configurations": [
{
"name": "Remote",
"type": "go",
"request": "attach",
"mode": "remote",
"remotePath": "/go/src/app",
"port": 2345,
"host": "localhost"
}
]
}
.air.tomlを編集
cmdとfull_binを以下に編集
cmd = 'go build -gcflags "all=-N -l" -o ./tmp/main'
full_bin = "dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec --continue tmp/main"
Dockerfileを編集
dlvをインストールするように追記
FROM golang:1.19-alpine as dev
ENV ROOT=/go/src/app
ENV CGO_ENABLED 0
WORKDIR ${ROOT}
RUN apk update && apk add git
RUN go install github.com/go-delve/delve/cmd/dlv@latest -> ここ
RUN go install github.com/cosmtrek/air@latest
RUN apk add curl
CMD ["air", "-c", ".air.toml"]
docker-compose.ymlを編集
2345ポートを開けるように追記
version: '3.8'
services:
app:
build:
context: .
target: dev
dockerfile: Dockerfile
env_file: .env
tty: true
container_name: echo-practice
volumes:
- ./:/go/src/app
ports:
- 1323:1323
- 2345:2345 -> ここ
mock:
image: node:19-alpine3.16
tty: true
container_name: animal-api
working_dir: /tmp
#restart: always
command: >
sh -c '
npm install -g @stoplight/prism-cli
prism mock -h 0.0.0.0 "/tmp/openapi.yml"
'
volumes:
- data-mock:/var/lib/mock/data
- ./mock:/tmp
ports:
- 4010:4010
volumes:
data-mock:
動作確認
コンテナ起動
docker-compose up -d
Discussion