项目介绍
官方 Github: Podinfo
Podinfo 是一个用 Go 制作的小型 web 应用程序,它展示了在 Kubernetes 中运行微服务的最佳实践。
它已实现的技术指标(截选自官方 README.md ):
里面每一项技术指标的实现方式,其实都可以拿出来单独讲好久,相关理论也有好多。
这里我只是讲针对这个项目,我们该如何使用 Docker 容器去探索它。
构建容器调试环境
IDE
VSCode + golang/vscode-go
Go 国内加速镜像
编写 Dockerfile.dev 文件
FROM golang:1.14WORKDIR /workspace# copy modules manifestsCOPY go.mod go.modCOPY go.sum go.sum# 阿里云RUN go env -w GO111MODULE=onRUN go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct# cache modulesRUN go mod downloadRUN go get github.com/go-delve/delve/cmd/dlv
构建 Image
docker build -f Dockerfile.dev -t podinfo:dev .
编写 docker-compose.yaml
version: "3.4"services:golang:image: podinfo:devcommand: >bash -c "ls -la&& dlv debug /workspace/cmd/podinfo --headless --log -l 0.0.0.0:2345 --api-version=2"volumes:- ./:/workspaceports:- 9898:9898- 2345:2345security_opt:- "seccomp:unconfined"
配置 .vscode 的 launch.json
{"version": "0.2.0","configurations": [{"name": "Remote Docker","type": "go","request": "launch","mode": "remote","remotePath":"/workspace","port": 2345,"host": "127.0.0.1","program": "${workspaceFolder}","args": [],"trace" : "verbose","env" : {}}]}
开始探索
docker compose 一键启动
docker-compose up
Run Remote Docker
查看首页
查看给 Prometheus 的 metrics API
下断点,发请求调试
curl http://localhost:9898/api/info 复制代码
