我想进行一个docker多阶段构建,但是要删除/忽略.git文件夹,以节省docker镜像的空间。
我理解多阶段构建会从其他阶段复制“最终层”,是这样吗?
FROM ubuntu as first
WORKDIR /app
RUN git clone <repo>
FROM golang as second
WORKDIR app
COPY --from=first /app .
是否有一些--exclude选项可用于COPY命令?这里有一个相关的问题:https://forums.docker.com/t/dockerignore-in-multi-stage-builds/57169
另外一个可能的解决方法是手动删除.git文件夹:
FROM ubuntu as first
WORKDIR /app
RUN git clone <repo>
RUN rm -rf .git
我理解多阶段构建会从其他阶段复制“最终层”,是这样吗?
docker build
之前,你可能会发现在主机上运行git clone
更容易:你不需要禁用Docker层缓存来获取更新的代码库,你可以轻松构建非当前提交或分支,并且你不需要尝试将凭据传递到Docker空间以克隆私有代码库。这样就避免了这个问题,因为你可以在.dockerignore
中包含.git
。 - undefined