Heim >Backend-Entwicklung >Golang >Live-Neuladen und Debuggen von Go-Anwendungen in einem 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:
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>
build.context
ports
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
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!