首頁 > 後端開發 > Golang > 在 Docker 容器內即時重新載入和調試 Go 應用程式

在 Docker 容器內即時重新載入和調試 Go 應用程式

Barbara Streisand
發布: 2025-01-27 02:09:09
原創
777 人瀏覽過

Live-Reload and Debugging Go Applications Within a Docker Container

>本指南演示了設置docker容器中的GO應用程序的實時重載和調試,以鏡像Node.js開發工作流程。 雖然此特定GO設置的在線資源很少,但這種方法將一致的Docker環境的好處與實時重載的效率和調試的力量相結合。

>

密鑰差異: live-realoading在代碼更改上重新啟動應用程序; >熱重載

修補了不重新啟動的內存。調試,對於有效開發至關重要,超過了基於日誌的故障排除。 Docker確保跨環境的應用程序行為一致。 >

>環境:

本指南使用Windows 11帶有WSL(Windows子系統的Linux),但適用於Linux(相同的步驟)和MACOS(相似)。 強烈建議Windows Go開發WSL,因為它的速度與本機Windows File System相比。 技術堆棧:

  • > docker:提供了一個一致且孤立的開發環境。
  • >
  • >空氣:>一個輕巧的GO工具,用於實時填充。 Nodemon或Inotify-Tool等替代方案不是特定的。
  • >
  • delve:強大的GO調試器與諸如VS代碼之類的IDE集成。 >
目標是自動化服務器重新啟動代碼更改,以及IDE內的完整調試功能。

Golang Server(光纖示例):

> 創建

main.go>用

package main

import "github.com/gofiber/fiber/v2"

func main() {
    app := fiber.New()

    app.Get("/", func(c *fiber.Ctx) error {
        str := "Hello, World!"
        return c.SendString(str)
    })

    app.Listen(":3000")
}
登入後複製
對此進行測試

go run .> docker設置(

):

docker-compose.yml

:指定Dockerfile位置。
api:
    build:
      context: ./api
      dockerfile: Dockerfile
    ports:
      - '3000:3000'
      - '2345:2345'
    stop_grace_period: 0.1s
    volumes:
      - ./api:/app
    networks:
      - internal
登入後複製
>
  • :露出端口3000(Web服務器)和2345(調試器)。 build.context
  • :將本地ports目錄安裝到容器中。
  • volumesapi> dockerfile(/app):
>

api/Dockerfile空氣和delve配置():

>
FROM golang:1.23.2-alpine3.20
WORKDIR /app
RUN go install github.com/go-delve/delve/cmd/dlv@latest
RUN go install github.com/air-verse/air@latest
COPY go.mod go.sum ./
RUN go mod download
USER root # For development only
EXPOSE 2345
EXPOSE 3000
CMD ["air", "-c", "air.toml"]
登入後複製

這將配置空氣使用Delve啟用了啟用調試的應用程序。 在 api/air.toml此配置VS代碼以連接到Docker容器中運行的Delve調試器。 調整以匹配您的項目的路徑。

root = "."
tmp_dir = "tmp"

[build]
full_bin = "dlv debug --build-flags=\"-gcflags='all=-N -l'\" --listen 0.0.0.0:2345 --headless --continue --accept-multiclient --output=dist/debug"
登入後複製
這個完整的設置可以在Docker容器中進行實時重載和調試,以進行有效的GO開發。請記住在設置所有文件後運行

>

以上是在 Docker 容器內即時重新載入和調試 Go 應用程式的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板