Heim >Backend-Entwicklung >Golang >Live-Neuladen und Debuggen von Go-Anwendungen in einem Docker-Container

Live-Neuladen und Debuggen von Go-Anwendungen in einem Docker-Container

Barbara Streisand
Barbara StreisandOriginal
2025-01-27 02:09:09712Durchsuche

Live-Reload and Debugging Go Applications Within a Docker Container

Diese Anleitung zeigt, dass das Live-Reladieren und Debuggen für GO-Anwendungen in einem Docker-Container eingerichtet wird und einen Node.js-Entwicklungsworkflow widerspiegelt. Während Online-Ressourcen für dieses spezielle GO-Setup knapp sind, kombiniert dieser Ansatz die Vorteile konsistenter Docker-Umgebungen mit der Effizienz des Live-Relading und der Kraft des Debuggens.

Schlüsselunterschiede: Live-Reloading startet die Anwendung bei Codeänderungen neu; Hot-Reloading Patches Speicher ohne Neustarts. Debugging, entscheidend für die effiziente Entwicklung, übertrifft die Fehlerbehebung der Logbasis. Docker sorgt für ein konsequentes Anwendungsverhalten in allen Umgebungen.

Umgebung: Diese Anleitung verwendet Windows 11 mit WSL (Windows -Subsystem für Linux), ist jedoch an Linux (identische Schritte) und MacOS (ähnlich) anpassbar. WSL wird aufgrund seiner überlegenen Geschwindigkeit im Vergleich zum nativen Windows -Dateisystem für die Windows -GO -Entwicklung sehr empfohlen.

Technologiestapel:

  • Docker: bietet eine konsistente und isolierte Entwicklungsumgebung.
  • Luft: Ein leichtes GO-Tool für Live-Reloading. Alternativen wie Nodemon oder Inotify-Tools sind nicht gO-spezifisch.
  • TEILVE: Ein leistungsstarker Go -Debugger, der sich in IDEs wie VS Code integriert.
Das Ziel ist der automatisierte Server -Neustart in Codeänderungen sowie die vollständige Debugging -Funktionalität innerhalb der IDE.

Golang Server (Beispiel für Glasfaser):

erstellen

: main.go

<code class="language-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")
}</code>
testen Sie dies mit

go run .

Docker Setup (): docker-compose.yml

<code class="language-yaml">api:
    build:
      context: ./api
      dockerfile: Dockerfile
    ports:
      - '3000:3000'
      - '2345:2345'
    stop_grace_period: 0.1s
    volumes:
      - ./api:/app
    networks:
      - internal</code>
  • : Gibt den Ort der Dockerfile an. build.context
  • : Enthält Ports 3000 (Webserver) und 2345 (Debugger). ports
  • : montiert das lokale volumes Verzeichnis nach api im Container. /app

dockerfile (): api/Dockerfile

<code class="language-dockerfile">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"]</code>

Luft- und Deckkonfiguration (): api/air.toml

<code class="language-toml">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"</code>
Diese konfiguriert Air, um Deck zum Erstellen und Ausführen der Anwendung mit aktiviertem Debugging zu verwenden.

gegen Code -Debug -Konfiguration (): api/.vscode/launch.json

<code class="language-json">{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Connect to container",
            "type": "go",
            "debugAdapter": "dlv-dap",
            "request": "attach",
            "mode": "remote",
            "port": 2345,
            "host": "localhost",
            "trace": "verbose",
            "substitutePath": [{"from": "/home/user/project/api", "to": "/app"}]
        }
    ]
}</code>
Dieser Konfigurieren von VS -Code, um eine Verbindung zum Delve -Debugger herzustellen, das im Docker -Container ausgeführt wird. Passen Sie

an den Pfad Ihres Projekts an. /home/user/project/api

Dieses vollständige Setup ermöglicht das Live-Reladieren und Debuggen in einem Docker-Container zur effizienten GO-Entwicklung. Denken Sie daran,

nach dem Einrichten aller Dateien auszuführen. docker-compose up

Das obige ist der detaillierte Inhalt vonLive-Neuladen und Debuggen von Go-Anwendungen in einem Docker-Container. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn