如何将特定的 git-lfs 文件下载到 Docker 容器中

Mor*_*tch 5 git github docker docker-compose git-lfs

我有一个包含几个大文件的 git repo。Git-LFS 已启用。我想将其中一个文件引入 Docker 容器。我已经在容器中安装了 git-lfs。到目前为止,我有:

RUN git clone --no-checkout --depth 1 https://github.com/my-org/my-data-repo.git
RUN cd my-data-repo
RUN git lfs pull -I data/my-large-file.csv
Run Code Online (Sandbox Code Playgroud)

该文件实际上已下载,但 Docker 构建过程失败,因为我收到以下错误:

Error updating the git index: (1/1), 90 MB | 4.8 MB/s                                                                                                                                                                                       
error: data/my-large-file.csv: cannot add to the index - missing --add option?
fatal: Unable to process path data/my-large-file.csv


Errors logged to .git/lfs/logs/20200709T142011.864584.log
Use `git lfs logs last` to view the log.
Run Code Online (Sandbox Code Playgroud)

如何在不抛出异常的情况下执行此操作,从而终止 Docker 构建过程?

LeG*_*GEC 2

您的问题之一是:

RUN cd my-data-repo
RUN git lfs pull -I data/my-large-file.csv
Run Code Online (Sandbox Code Playgroud)

没有按您的预期工作:

  • 第一个进程启动,其中cd my-data-reop将当前目录设置为my-data-repo
  • 然后该进程结束(及其工作目录)
  • 然后启动第二个进程,该进程git lfs pull ...从初始目录运行

您可以对命令进行分组:

RUN cd my-data-repo && git lfs pull -I data/my-large-file.csv
Run Code Online (Sandbox Code Playgroud)

或使用WORKDIR命令(按照此处的建议):

WORKDIR my-data-repo
RUN git lfs pull -I data/my-large-file.csv
Run Code Online (Sandbox Code Playgroud)