Ce guide démontre la mise en place de rechargement en direct et de débogage des applications GO dans un conteneur Docker, reflétant un flux de travail de développement Node.js. Bien que les ressources en ligne pour cette configuration de GO spécifique soient rares, cette approche combine les avantages des environnements de Docker cohérents avec l'efficacité du rechargement en direct et la puissance du débogage.
Différences de clés: LIVE-RELOADING Redémarrez l'application sur les modifications de code; Hot-reloading Patche la mémoire sans redémarrage. Débogage, crucial pour un développement efficace, dépasse le dépannage basé sur les logaries. Docker assure un comportement d'application cohérent dans les environnements.
Environnement: Ce guide utilise Windows 11 avec WSL (sous-système Windows pour Linux) mais est adaptable à Linux (étapes identiques) et au macOS (similaire). WSL est fortement recommandé pour le développement de Windows GO en raison de sa vitesse supérieure par rapport au système de fichiers Windows natif.
Stack de technologie:
L'objectif est que le serveur automatisé redémarre les modifications de code, parallèlement à la fonctionnalité complète de débogage dans l'IDE.
Golang Server (exemple de fibre):
Créer 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>
Testez cela avec go run .
Configuration du docker (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
: Spécifie l'emplacement Dockerfile. ports
: expose les ports 3000 (serveur Web) et 2345 (débogueur). volumes
: monte le répertoire local api
à /app
dans le conteneur. 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>
Configuration de l'air et de la délai (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>
Cela configure de l'air pour utiliser Delve pour construire et exécuter l'application avec le débogage activé.
VS CODE DEBUG Configuration (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>
Cela configure le code vs pour se connecter au débogueur Delve exécutant dans le conteneur Docker. Ajustez /home/user/project/api
pour correspondre au chemin de votre projet.
Cette configuration complète permet de recharger et de déboguer dans un conteneur Docker pour un développement GO efficace. N'oubliez pas d'exécuter docker-compose up
après la configuration de tous les fichiers.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!