ホームページ >バックエンド開発 >Golang >Docker コンテナ内での Go アプリケーションのライブリロードとデバッグ

Docker コンテナ内での Go アプリケーションのライブリロードとデバッグ

Barbara Streisand
Barbara Streisandオリジナル
2025-01-27 02:09:09749ブラウズ

Live-Reload and Debugging Go Applications Within a Docker Container

このガイドは、node.js開発ワークフローをミラーリングするDockerコンテナ内のGOアプリケーションのライブレロードとデバッグのセットアップを示しています。 この特定のGOセットアップのオンラインリソースは不足していますが、このアプローチは、一貫したDocker環境の利点とライブレロードの効率とデバッグの力を組み合わせています。

キーの違い:

ライブレロードコードの変更でアプリケーションを再起動します。 ホットレロードは、再起動せずにメモリをパッチします。効率的な開発に不可欠なデバッグは、ログベースのトラブルシューティングを上回ります。 Dockerは、環境全体で一貫したアプリケーション動作を保証します 環境:

このガイドは、WSL(Linux用のWindowsサブシステム)でWindows 11を使用しますが、Linux(同一の手順)とMacOS(同様)に適応できます。 WSLは、ネイティブWindowsファイルシステムと比較して、その優れた速度のため、Windows Go開発に強くお勧めします。

テクノロジースタック:

docker:

一貫した孤立した開発環境を提供します
  • Air:ライブレロード用の軽量GOツール。 NodemonやInotify-Toolsなどの代替は、GO固有ではありません delve: vsコードのようなIDEと統合された強力なゴーデバッガー。
  • 目標は、IDE内の完全なデバッグ機能とともに、コードの変更で自動化されたサーバーが再起動することです。 Golang Server(ファイバーの例):
  • create

これを

でテストします dockerセットアップ(

):

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>

go run .:dockerfileの場所を指定します。

:ポート3000(Webサーバー)と2345(デバッガー)を公開します docker-compose.yml:containerにローカル

ディレクトリを
<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
  • dockerfile(
  • ):ports
  • volumesapiAir and Delve Configuration(/app):

これにより、デバッグが有効になってアプリケーションの構築と実行にDelveを使用するようにAirを構成します。 api/Dockerfilevsコードデバッグ構成():

<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>

これにより、Dockerコンテナで実行されているDelveデバッガーに接続するためのコードとコードが構成されます。 プロジェクトのパスに一致するようにを調整します api/air.tomlこの完全なセットアップにより、効率的なGO開発のためにDockerコンテナ内でのライブレロードとデバッグが可能になります。すべてのファイルをセットアップした後、を実行することを忘れないでください

以上がDocker コンテナ内での Go アプリケーションのライブリロードとデバッグの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。