是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.mod
和go.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
。