GolangとMongoを備えたDockerコンテナーがあります。電報ボットを作成し、ソースコードを変更したときにgoアプリケーションを自動再コンパイル/再実行したい。mitranim / gowを使用しようとしましたが、機能しませんでした。
ソースコードを変更した後、goアプリケーションを自動再実行するために何を使用する必要がありますか?nodejsにはnodemonのように見えるものは何でも必要ですが、goには
ここに私のdocker -composeとdockerfileの設定があります。
My host machine is win10
Linuxのほとんどのファイル監視ツールは、優先メカニズムinotifyとして使用します。あなたが言及したmitranim / gowツールは同じカテゴリに分類されるようです。
問題は、Windowsでファイルシステムを変更しても、Linuxゲストがイベントを公開しないことです。Windowsはウォッチが設定されていることを「認識」していないため、これは一種の予想であり、ファイルが変更されたときにLinuxコンテナーに通知することはできません。これは、仮想化環境または他のクロスプラットフォーム/ネットワーク上のファイルシステム共有ソリューションの一般的な問題です。
あなたが見てみたいかもしれない同様の問題があります:共有ドライブ上のInotifyが機能しません
この問題の考えられる解決策は、ポーリングを使用することです。nodemon
持っているlegacyWatch
フラグを、ファイルが変更されたとき、任意のコマンドを実行できます。
一部のネットワーク環境(マウントされたドライブ全体でnodemonを実行するコンテナーなど)では、chokidarのポーリングを有効にするlegacyWatch:trueを使用する必要があります。
例:
nodemon --legacy-watch <working-dir> -e go --exec "go run main.go"
または、ファイルの変更(ハッキングの一種)を検出したときにファイルに触れて、nodemon
他の監視ツールと組み合わせて使用しnodemon
ます。
nodemon --legacy-watch <working-dir> -e go --exec "touch main.go"
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加