我有帶有 Golang 和 Mongo 的 Docker 容器。我想制作電報機器人,并且我想在更改源代碼時自動重新編譯/重新運行我的 go 應(yīng)用程序。我嘗試使用mitranim/gow,但沒有成功。更改源代碼后,我需要使用什么來自動重新運行我的 go 應(yīng)用程序?我需要任何東西似乎是用于nodejs的nodemon,但對于go這是我的docker-compose和dockerfile配置。My?host?machine?is?win10
1 回答

桃花長相依
TA貢獻1860條經(jīng)驗 獲得超8個贊
Linux 上的大多數(shù)文件監(jiān)控工具都使用inotify作為首選機制。您提到的mitranim/gow工具似乎屬于同一類別。
問題在于,對 Windows 中的文件系統(tǒng)進行更改不會導(dǎo)致 Linux 來賓發(fā)布該事件。這是預(yù)料之中的,因為 Windows 不“知道”已設(shè)置監(jiān)視,因此無法在文件更改時通知 Linux 容器。這是虛擬化環(huán)境或其他跨平臺/網(wǎng)絡(luò)文件系統(tǒng)共享解決方案的常見問題。
該問題的一個可能的解決方案是使用輪詢。nodemon
有一個legacyWatch
標(biāo)志,可以在文件更改時運行任何命令:
在某些網(wǎng)絡(luò)環(huán)境中(例如運行 nodemon 的容器在已安裝的驅(qū)動器上讀取數(shù)據(jù)),您將需要使用 LegacyWatch: true 來啟用 Chokidar 的輪詢。
例子:
nodemon?--legacy-watch?<working-dir>?-e?go?--exec?"go?run?main.go"
nodemon
或者與其他監(jiān)控工具結(jié)合使用,nodemon
在檢測到文件更改時觸摸文件(有點黑客攻擊):
nodemon?--legacy-watch?<working-dir>?-e?go?--exec?"touch?main.go"
- 1 回答
- 0 關(guān)注
- 143 瀏覽
添加回答
舉報
0/150
提交
取消