开发您的应用
在上一节中,您了解了如何使用 Docker Compose 将服务连接在一起。在本节中,您将学习如何使用 Docker 开发 Golang 应用。您还将了解如何使用 Docker Compose Watch 在代码更改时重建镜像。最后,您将测试应用并使用 Prometheus 作为数据源,在 Grafana 中可视化指标。
开发应用
现在,如果您对本地的 Golang 应用进行了任何更改,都需要在容器中反映出来,对吧?一种方法是在代码更改后,在 Docker Compose 中使用 --build
标志。这将重建 compose.yml
文件中包含 build
指令的所有服务,在本例中是 api
服务(Golang 应用)。
docker compose up --build
但是,这并不是最佳方法。这样做效率不高。每次代码更改后,您都需要手动重建。这对于开发来说不是一个好的流程。
更好的方法是使用 Docker Compose Watch。在 compose.yml
文件中,您已经在 api
服务下添加了 develop
部分。所以,这更像是热重载。每当您更改代码(在 path
中定义)时,它都会重建镜像(或根据操作重启)。这是您可以使用它的方式
|
|
在 compose.yml
文件中添加 develop
部分后,您可以使用以下命令启动开发服务器
$ docker compose watch
现在,如果您修改项目中的 main.go
或任何其他文件,api
服务将自动重建。您将在终端中看到以下输出
Rebuilding service(s) ["api"] after changes were detected...
[+] Building 8.1s (15/15) FINISHED docker:desktop-linux
=> [api internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 704B 0.0s
=> [api internal] load metadata for docker.io/library/alpine:3.17 1.1s
.
=> => exporting manifest list sha256:89ebc86fd51e27c1da440dc20858ff55fe42211a1930c2d51bbdce09f430c7f1 0.0s
=> => naming to docker.io/library/go-api:latest 0.0s
=> => unpacking to docker.io/library/go-api:latest 0.0s
=> [api] resolving provenance for metadata file 0.0s
service(s) ["api"] successfully built
测试应用
现在您的应用已运行,请前往 Grafana 面板以可视化您正在注册的指标。打开您的浏览器并导航至 http://localhost:3000
。您将看到 Grafana 登录页面。登录凭据是在 Compose 文件中提供的。
登录后,您可以创建一个新的面板。在创建面板时,您会注意到默认数据源是 Prometheus
。这是因为您已经在 grafana.yml
文件中配置了数据源。


您可以使用不同的面板来可视化指标。本指南不详细介绍 Grafana。您可以参考 Grafana 文档 以获取更多信息。有一个 Bar Gauge 面板用于可视化来自不同端点的总请求数。您使用了 api_http_request_total
和 api_http_request_error_total
指标来获取数据。


您创建了这个面板来可视化来自不同端点的总请求数,以比较成功和失败的请求。所有成功的请求的条形图将显示为绿色,所有失败的请求的条形图将显示为红色。此外,它还会显示请求来自哪个端点,无论是成功请求还是失败请求。如果您想使用这个面板,您可以从您克隆的仓库中导入 dashboard.json
文件。
总结
您已到达本指南的末尾。您学习了如何使用 Docker 开发 Golang 应用。您还了解了如何使用 Docker Compose Watch 在代码更改时重建镜像。最后,您测试了应用并使用 Prometheus 作为数据源,在 Grafana 中可视化了指标。