git - Docker 多阶段构建 - 排除 .git 文件夹
问题描述
我想做一个 docker 多阶段构建,但 rm/ignore .git 文件夹,以节省 docker 映像的空间。
FROM ubuntu as first
WORKDIR /app
RUN git clone <repo>
FROM golang as second
WORKDIR app
COPY --from=first /app .
COPY 是否有一些 --exclude 选项?这是一个相关问题: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
我假设多阶段构建从另一个阶段复制“最终层”?
解决方案
从构建中排除文件的一种方法是使用.dockerignore 文件。但是,这可能不是您在准备映像期间运行 git clone时所需要的,因此您实际上需要该.git
文件夹。
如果您想使用多阶段构建,那么您需要将上一个构建的工件而不是层复制到下一个构建。
另一个想法是运行一个浅克隆——git clone --depth=1
这应该会显着减少存储库的大小。
推荐阅读
- python - Twitter API 搜索应用,返回某些 json 结果
- php - 如何在 html 中包含 php 文件,以便网站加载 php 开始的位置而不是开头?
- typescript - Angular 7 ngZone 抛出未定义的错误
- android - Searchview 使用关键字和 Unsplash API
- r - 在ggplot2中重新创建直方图ldahist()?
- python - 在 Python 的 Windows 10 中从屏幕上抓取一个窗口
- python - get_queryset() 缺少 1 个必需的位置参数:'country_id'
- .net-core - 在 .netcore 中使用 .NetFramwork 库
- python - 如何操作Excel整行
- azure-data-factory - 自定义 Azure 数据工厂 ARM 模板的参数