開發你的應用程式
在上一節中,你瞭解瞭如何使用 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 儀表板以視覺化你正在註冊的指標。開啟瀏覽器並導航到 https://: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 中視覺化指標。