背景介绍
大前端时代,云原生时代,BFF Or BFF Microservices 基础设施层的构建不一定会由 NodeJS Or Deno 主导,我觉得 Golang 也会是一种不错的选择。至少笔者大前端团队在探索和实践。
基于 Kubernetes 的 GitOps 持续交付方式也将会成为大前端基础设施方向之一。
项目介绍
官方 Github: Podinfo
Podinfo 是一个用 Go 制作的小型 web 应用程序,它展示了在 Kubernetes 中运行微服务的最佳实践。
它已实现的技术指标(截选自官方 README.md ):
里面每一项技术指标的实现方式,其实都可以拿出来单独讲好久,相关理论也有好多。
这里我只是讲针对这个项目,我们该如何使用 Docker 容器去探索它。
构建容器调试环境
IDE
Go 国内加速镜像
编写 Dockerfile.dev 文件
FROM golang:1.14
WORKDIR /workspace
# copy modules manifests
COPY go.mod go.mod
COPY go.sum go.sum
# 阿里云
RUN go env -w GO111MODULE=on
RUN go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct
# cache modules
RUN go mod download
RUN 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:dev
command: >
bash -c "ls -la
&& dlv debug /workspace/cmd/podinfo --headless --log -l 0.0.0.0:2345 --api-version=2"
volumes:
- ./:/workspace
ports:
- 9898:9898
- 2345:2345
security_opt:
- "seccomp:unconfined"
复制代码
.vscodelaunch.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
查看首页
metrics
下断点,发请求调试
curl http://localhost:9898/api/info
复制代码
Refs
12factor
本文抛转引玉,后文待续……