我已经尝试了所有方法,但都没有解决我的热重载问题,容器将正常加载,代码将被构建,然而,修改代码后,代码会改变,但air包不会做任何重建。
如果编辑某些代码,此状态不会更改。
如果在本地运行,则一切正常。
Dockerfile:
FROM golang:alpine
ENV GO111MODULE=on
EXPOSE 8080
RUN mkdir /app
WORKDIR /app
COPY go.mod .
COPY go.sum .
RUN go mod download
RUN go get github.com/cosmtrek/air
COPY . .
ENTRYPOINT ["air", "-c", ".air.toml"]
docker-compose.yml
go:
container_name: go
build:
dockerfile: Dockerfile
context: ./
volumes:
- ./:/app
ports:
- '8080:8080'
.air.toml
root = "."
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
4条答案
按热度按时间pprl5pva1#
我知道这是一个老问题,但我最近遇到了这个问题,终于设法解决了它。所以我把我的答案留在这里,以防对其他用户有帮助。
正如我在一些评论中所读到的,这个问题确实是由于Air使用事件通知(fsnotify)和这个does not propagate correctly between the windows system and the docker containers。然而,这在Linux上确实可以正常工作,因此我们目前可以选择的唯一解决方案如下:
在Windows上安装WSL 2
WSL 2允许我们在Windows系统中安装一个Linux发行版,以便使用它的工具、实用程序和文件系统。多亏了这一点,我们将能够解决事件传播的问题,通过将我们的存储库副本移动到Linux文件系统并对其进行处理,但都在windows操作系统内。
实现这一目标的步骤如下:
1.从命令行安装Ubuntu发行版
wsl --install -d Ubuntu
1.将ubuntu设置为WSL 2的当前发行版
wsl --set-version Ubuntu 2
1.在docker中应用WSL集成
3.1进入Docker桌面->设置->资源-> WSL集成->刷新
3.2激活Ubuntu
3.3应用更改
1.从windows explorer
\\wsl$\Ubuntu\
访问ubuntu文件系统,并将存储库副本移动到其中。1.安装vscode Remote的扩展- WSL
1.通过远程wsl从新位置打开vscode中的工作目录,使用:
ctrl+shift+p
->在WSL中打开文件夹1.运行命令:
docker-compose up
所有这些信息都是从今天在空气 Package 库的公开发行中获得的。
fykwrbwg2#
完美的解决方案
**问题:**Air正在启动,但在项目更改时未重新加载
**解决方案:**在.air.toml文件中添加 poll = true 这是因为Windows有一些限制,为了克服这些限制,我们将poll设置为true
代码解决方案:
zi8p0yeb3#
只需通过命令
docker-compose up -d --build
重建容器im9ewurl4#
当您在visual studio中使用wsl打开文件夹时,问题将得到解决
enter image description here
可能有帮助:https://code.visualstudio.com/docs/remote/wsl