了解此 Docker 文件 - 文件复制到何处



是docker文件的新手。我试图了解 docker 构建在这里是如何工作的。 我目前有一个文件夹,里面有两个文件。该文件夹称为foo文件夹的结构如下。它有两个文件,第一个文件是main.go,旁边的另一个文件是Dockerfile

如下图所示
Foo
|_main.go
|_go.mod
|_go.sum
|_Dockerfile

我的 Dockerfile 目前看起来像这样,命令docker build -t ..是从文件夹 Foo 内部调用的。

FROM golang:1.18-alpine AS builder
# Create and change to the app directory.
WORKDIR /app
COPY go.* ./
RUN go mod download
# Copy local code to the container image.
COPY . ./
RUN go build -v -o my app
....

现在这是一个相当简单的Dockerfile。这是我的理解。

1-高朗:1.18-高山是基本图像

2-在容器中将创建一个名为app的文件夹

3-go.modgo.sum将被复制到容器的容器(可能是家)的路径./

4-运行go mod download将从/app文件夹内部调用,正确吗?

我的问题基本上是针对4号。go mod download从文件夹内部调用/app?如果是这样,它是如何工作的,因为据我了解,/app文件夹到目前为止是空的?应用程序文件夹是什么时候填充的?在声明中COPY go.* ././那是什么路,那就是家?

在第WORKDIR /app行中,您的当前路径将设置为/app。如果该目录不存在,则将事先创建它。

接下来COPY go.* ./,这将匹配所有以go.开头的文件,这些文件将被复制到 docker 容器中的/app目录中。所以你的 docker/app应该是这样的:

/app
| go.mod
| go.sum

再次使用COPY . ./,您将所有文件从当前目录复制到 docker 容器/app目录。它将替换管理器中已有的文件。/app将如下所示:

/app
| main.go
| go.mod
| go.sum
| Dockerfile

最后是RUN go build -v -o myapp,您正在使用go构建应用程序并保存二进制文件myapp

最新更新