Docker 构建映像:不允许从命令行进行绑定安装的原因?

问题描述 投票:0回答:1

Docker 构建镜像:不允许在命令行上绑定挂载的原因是什么?这是一个安全问题?

用例:

gradle 使用 /home/username/.gradle 下的神器缓存

Docker文件:

  WORDIR /opt/app/src
  COPY . $WORKDIR
  gradle build 

在 Dockerfile 中运行 gradle 将在每次构建图像时下载所有工件。

  docker build -t image1 .

如果支持 bind-mount 选项,可以使用主机上的 gradle 缓存,构建速度将大大加快。

  docker build -v /home/username/.gradle:/root/.gradle -t image1 .

选项由用户在命令行指定,应该没有安全问题。

docker gradle build mount
1个回答
0
投票

使用 buildkit

RUN --mount=type=cache,target=/path ...
功能可以更好地处理这个问题(文档在他们的 git repo 中可用)。

生成的 Dockerfile 如下所示:

# syntax=docker/dockerfile:1

FROM base
WORDIR /opt/app/src
COPY . $WORKDIR
RUN --mount=type=cache,target=/root/.gradle gradle build

避免安装任意文件夹的原因是它会将主机依赖项添加到图像构建中,而这些依赖项不包含在上下文中(或提交到 git repo)。结果是图像可能只能在某些机器上构建,或者图像可能因构建位置而异。

© www.soinside.com 2019 - 2024. All rights reserved.