簡體   English   中英

如何在 Docker 容器中自動重啟 golang 應用程序?

[英]How I can make autorestarts golang application in Docker container?

我有帶有 Golang 和 Mongo 的 Docker 容器。 我想制作電報機器人,並且我想在更改源代碼時自動重新編譯/重新運行我的 go 應用程序。 我嘗試使用mitranim/gow ,但沒有用。

更改源代碼后,我需要使用什么來自動重新運行我的 go 應用程序? 對於nodejs,我需要任何似乎nodemon的東西,但對於go

這是我的docker-composedockerfile配置。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM