[英]How I can make autorestarts golang application in Docker container?
我有帶有 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 讀取已安裝驅動器的容器),您將需要使用 legacyWatch: true 來啟用 Chokidar 的輪詢。
例子:
nodemon --legacy-watch <working-dir> -e go --exec "go run main.go"
或者將nodemon
與其他監控工具結合使用,讓nodemon
在檢測到文件更改時觸摸文件(有點像 hack):
nodemon --legacy-watch <working-dir> -e go --exec "touch main.go"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.