开发你的应用程序

在上一节中,你了解了如何使用 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 中定义)时,它都会重建镜像(或根据操作重新启动)。你可以这样使用它

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
services:
  api:
    container_name: go-api
    build:
      context: .
      dockerfile: Dockerfile
    image: go-api:latest
    ports:
      - 8000:8000
    networks:
      - go-network
    healthcheck:
      test: ["CMD", "curl", "-f", "https://:8080/health"]
      interval: 30s
      timeout: 10s
      retries: 5
    develop:
      watch:
        - path: .
          action: rebuild

添加 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 仪表板以可视化你正在注册的指标。打开浏览器并导航到 https://:3000。你将看到 Grafana 登录页面。登录凭据是 Compose 文件中提供的。

登录后,你可以创建一个新仪表板。在创建仪表板时,你会注意到默认数据源是 Prometheus。这是因为你已经在 grafana.yml 文件中配置了数据源。

The optional settings screen with the options specified.

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

The optional settings screen with the options specified.

你创建此面板是为了可视化来自不同端点的请求总数,以比较成功和失败的请求。对于所有良好的请求,条形将是绿色,对于所有失败的请求,条形将是红色。此外,它还会显示请求来自哪个端点,无论是成功请求还是失败请求。如果你想使用此面板,可以从你克隆的存储库中导入 dashboard.json 文件。

摘要

你已阅读完本指南。你学习了如何使用 Docker 开发 Golang 应用程序。你还了解了如何使用 Docker Compose Watch 在代码更改时重建镜像。最后,你测试了应用程序并使用 Prometheus 作为数据源在 Grafana 中可视化指标。

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.