我正在努力尝试使用Docker和Go来改善我的开发环境,但当文件发生变化时,我很难在我的容器中获得自动重载。如果有问题的话,我在Windows上运行Docker Desktop版本18.09.1。
我使用CompileDaemon进行重载,我的DockerFile定义如下
FROM golang:1.11-alpine
RUN apk add --no-cache ca-certificates git
RUN go get github.com/githubnemo/CompileDaemon
WORKDIR /go/src/github.com/testrepo/app
COPY . .
EXPOSE 8080
ENTRYPOINT CompileDaemon -log-prefix=false -directory="." -build="go build /go/src/github.com/testrepo/app/cmd/api/main.go" -command="/go/src/github.com/testrepo/app/main"
我的项目结构如下
- 应用程序
- api
- main.go
在我的docker-compose文件中,我设置了正确的卷,并且当我在本地进行更改时,文件会在我的容器中更新。
应用程序也在第一次加载时使用CompileDaemon正确启动,只是在文件更改时从未更新。
我看到第一批货...
运行构建命令!
构建成功。
正在重新启动给定命令。
那么我所做的任何更改都不会导致重新启动,即使我可以连接到容器并看到更改反映在预期的文件中。
2条答案
按热度按时间juud5qan1#
确保为您正在使用的服务装载了卷,这是Docker容器内部热重装工作的原因
See the full explanation
8fq7wneg2#
安装编译守护程序的正确方法是
Reference: https://github.com/githubnemo/CompileDaemon/issues/45#issuecomment-1218054581