Go语言 使用CompileDaemon自动重新加载Docker

h5qlskok  于 2023-01-06  发布在  Go
关注(0)|答案(2)|浏览(132)

我正在努力尝试使用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正确启动,只是在文件更改时从未更新。
我看到第一批货...
运行构建命令!
构建成功。
正在重新启动给定命令。
那么我所做的任何更改都不会导致重新启动,即使我可以连接到容器并看到更改反映在预期的文件中。

juud5qan

juud5qan1#

确保为您正在使用的服务装载了,这是Docker容器内部热重装工作的原因
See the full explanation

8fq7wneg

8fq7wneg2#

安装编译守护程序的正确方法是

RUN go install -mod=mod github.com/githubnemo/CompileDaemon

Reference: https://github.com/githubnemo/CompileDaemon/issues/45#issuecomment-1218054581

相关问题