Go app Dockerfile总是在重新启动时下载模块
我使用Go app Dockerfile总是在重新启动时下载模块,docker,go,docker-compose,Docker,Go,Docker Compose,我使用Go语言编写了一个应用程序,并为其创建了Dockerfile,如下所示。问题是每次我重新启动docker容器时,所有模块都会再次下载 FROM golang:1.15-alpine WORKDIR /my-app COPY . . RUN go run main.go 如何修复此问题?Docker将缓存每个层,并在它们与上一次运行相同时使用它们。您的Dockerfile的问题在于,您没有添加用于下载模块的层,也没有构建应用程序(您每次都在运行它)。我假设您正在为依赖项使用go模块,因此这
Go
语言编写了一个应用程序,并为其创建了Dockerfile
,如下所示。问题是每次我重新启动docker容器时,所有模块都会再次下载
FROM golang:1.15-alpine
WORKDIR /my-app
COPY . .
RUN go run main.go
如何修复此问题?Docker将缓存每个层,并在它们与上一次运行相同时使用它们。您的
Dockerfile
的问题在于,您没有添加用于下载模块的层,也没有构建应用程序(您每次都在运行它)。我假设您正在为依赖项使用go
模块,因此这里是Dockerfile
FROM golang:1.15-alpine
WORKDIR /my-app
COPY go.mod .
COPY go.sum .
RUN go mod download
COPY . .
RUN go build -i -o ./build/my-app
ENTRYPOINT ["./build/my-app"]
使用此Dockerfile
下载过程将缓存并在每次重新启动时重新使用(除非更改依赖项)