亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 golang 在 docker 中熱重載不起作用

使用 golang 在 docker 中熱重載不起作用

Go
泛舟湖上清波郎朗 2022-10-17 19:26:50
我已經嘗試了所有方法都沒有解決我的熱重載問題,容器將正常加載并構建代碼,但是修改代碼后代碼會改變,但空氣包不會進行任何重建。如果編輯某些代碼,此狀態不會改變。如果在本地運行一切正常。 Dockerfile:FROM golang:alpineENV GO111MODULE=onEXPOSE 8080RUN mkdir /appWORKDIR /appCOPY go.mod .COPY go.sum .RUN go mod downloadRUN go get github.com/cosmtrek/airCOPY . .ENTRYPOINT ["air", "-c", ".air.toml"]碼頭工人-compose.yml   go:    container_name: go    build:      dockerfile: Dockerfile      context: ./    volumes:      - ./:/app    ports:      - '8080:8080'.air.tomlroot = "."testdata_dir = "testdata"tmp_dir = "tmp"[build]  bin = "./tmp/main"  cmd = "go build -o ./tmp/main ."  delay = 1000  exclude_dir = ["assets", "tmp", "vendor", "testdata"]  exclude_file = []  exclude_regex = ["_test.go"]  exclude_unchanged = false  follow_symlink = false  full_bin = ""  include_dir = []  include_ext = ["go", "tpl", "tmpl", "html"]  kill_delay = "0s"  log = "build-errors.log"  send_interrupt = false  stop_on_error = true[color]  app = ""  build = "yellow"  main = "magenta"  runner = "green"  watcher = "cyan"[log]  time = false[misc]  clean_on_exit = false[screen]  clear_on_rebuild = false
查看完整描述

3 回答

?
手掌心

TA貢獻1942條經驗 獲得超3個贊

我看到這是一個老問題,但我最近遇到了這個問題,終于設法解決了。所以我把我的答案留在這里,以防它幫助其他用戶。

正如我在一些評論中所讀到的,問題確實是由于 Air 使用事件通知 (fsnotify) 并且這不能在 windows 系統和 docker 容器之間正確傳播。但是,這在 linux 上確實可以正常工作,因此我們目前可以選擇的唯一解決方案如下:

在 Windows 上安裝 WSL2

WSL2 允許我們在我們的 Windows 系統中安裝 Linux 發行版,以便使用它的工具、實用程序和文件系統。多虧了這一點,我們將能夠通過將存儲庫的副本移動到 linux 文件系統并對其進行處理來解決事件傳播問題,但這一切都在 windows 操作系統中。

實現這一目標的步驟是:

  1. 從命令行安裝 Ubuntu 發行版
    wsl --install -d Ubuntu

  2. 將 ubuntu 設置為 WSL2 的當前發行版

    wsl --set-version Ubuntu 2

  3. 在 docker 中應用 WSL 集成

    3.1 進入docker桌面->設置->資源->WSL集成->刷新

    3.2 激活 Ubuntu

    3.3 應用更改

  4. 從 Windows 資源管理器訪問 ubuntu 文件系統\\wsl$\Ubuntu\并將存儲庫副本移動到其中。

  5. 安裝 vscode Remote 的擴展 - WSL

  6. 通過遠程 wsl 使用以下命令從新位置打開 vscode 中的工作目錄:

    ctrl+shift+p-> 在 WSL 中打開文件夾

  7. 運行命令:

docker-compose up

所有這些信息都是從今天在空氣包存儲庫中的未解決問題中獲得的。


查看完整回答
反對 回復 2022-10-17
?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

只需通過命令重建容器docker-compose up -d --build



查看完整回答
反對 回復 2022-10-17
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

當您使用 wsl 在 Visual Studio 中打開文件夾時,問題將得到解決

在此處輸入圖像描述

可能會有所幫助: https ://code.visualstudio.com/docs/remote/wsl


查看完整回答
反對 回復 2022-10-17
  • 3 回答
  • 0 關注
  • 186 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號