Rumah > pembangunan bahagian belakang > Golang > Aplikasi Live-Reload and Debugging Go dalam bekas Docker

Aplikasi Live-Reload and Debugging Go dalam bekas Docker

Barbara Streisand
Lepaskan: 2025-01-27 02:09:09
asal
751 orang telah melayarinya

Live-Reload and Debugging Go Applications Within a Docker Container

Panduan ini menunjukkan penubuhan reloading dan debugging untuk aplikasi GO dalam bekas Docker, mencerminkan aliran kerja pembangunan Node.js. Walaupun sumber dalam talian untuk persediaan GO khusus ini adalah terhad, pendekatan ini menggabungkan manfaat persekitaran Docker yang konsisten dengan kecekapan reloading secara langsung dan kuasa debugging.

Perbezaan utama:

Live-Reloading Mulakan semula aplikasi pada perubahan kod; hot-reloading memori patch tanpa dimulakan semula. Debugging, penting untuk pembangunan yang cekap, melepasi penyelesaian masalah berasaskan log. Docker memastikan tingkah laku aplikasi yang konsisten merentasi persekitaran. Alam Sekitar:

Panduan ini menggunakan Windows 11 dengan WSL (Subsistem Windows untuk Linux) tetapi boleh disesuaikan dengan Linux (langkah yang sama) dan macOS (serupa). WSL sangat disyorkan untuk pembangunan Windows Go kerana kelajuan unggulnya berbanding dengan sistem fail Windows asli.

Stack Teknologi:

Docker:
    menyediakan persekitaran pembangunan yang konsisten dan terpencil.
  • Air:
  • Alat Go Lightweight untuk Live-Reloading. Alternatif seperti nodemon atau inotify-tools tidak pergi khusus.
  • Delve:
  • Debugger GO yang kuat mengintegrasikan dengan ides seperti vs code.
  • Matlamatnya adalah memulakan pelayan automatik pada perubahan kod, di samping fungsi debugging penuh dalam IDE.

Golang Server (contoh serat):

Buat :

main.go uji ini dengan

<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>
Salin selepas log masuk

go run . persediaan docker ():

docker-compose.yml

: Menentukan lokasi Dockerfile.
<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>
Salin selepas log masuk
  • : mendedahkan port 3000 (pelayan web) dan 2345 (debugger). build.context
  • : memasang direktori ports tempatan ke
  • di dalam bekas.
  • volumes api /app dockerfile ():

api/Dockerfile Konfigurasi udara dan menyelidiki ():

<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>
Salin selepas log masuk

ini mengkonfigurasi udara untuk menggunakan Delve untuk membina dan menjalankan aplikasi dengan debugging didayakan. api/air.toml vs code debug configuration ():

<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>
Salin selepas log masuk

ini mengkonfigurasi kod vs untuk menyambung ke delugger delve yang berjalan dalam bekas Docker. Laraskan

untuk memadankan jalan projek anda. api/.vscode/launch.json Persediaan lengkap ini membolehkan reloading langsung dan debug dalam bekas Docker untuk pembangunan GO yang cekap. Ingatlah untuk menjalankan selepas menubuhkan semua fail.

Atas ialah kandungan terperinci Aplikasi Live-Reload and Debugging Go dalam bekas Docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan