gpt4 book ai didi

python - Dockerfile,如何减小更改层的大小?

转载 作者:行者123 更新时间:2023-12-02 19:15:22 25 4
gpt4 key购买 nike

我有一个项目,其中有一些大文件和文件夹。有些文件大部分是静态的(* .params)。现在,我希望将静态文件/文件夹发布为独立的层。下面是我的项目结构。

/app
/static_files
/a.params
/b.params
/dynamic1.py
/dynamic2.py
/static_folders
/dynamic1.py
/dynamic2.py
/dynamic3.py
/folder1
/dynamic1
/dynamic.py
/dynamic2
/dynamic.py
run.py
requirements.txt
Dockerfile是
FROM nvidia/cuda:10.1-devel as base
WORKDIR /app

RUN apt update && apt install python3-pip -y && rm -rf /var/lib/apt/lists/*
RUN pip3 install --upgrade pip

COPY requirements.txt .
RUN pip3 install -r requirements.txt

COPY . .
RUN make
CMD ["python3","run.py"]
实际上,我在run.py中修改了一些代码然后将其发布,用户应拉取300MB以上的镜像。
提前致谢。

最佳答案

如果我理解正确,那么您想利用Docker层来减少发布容器更新时需要提取的字节。
为了实现这一点,您应该分割图层,以使静态(可能很大)文件相对于动态(可能很小)文件位于单独的层中。
您可以通过拥有一个专用的static文件夹并发出2个单独的COPY来实现此目的:一个用于静态目录,另一个用于其他所有内容(请注意排除静态目录本身!)。
鉴于您当前的结构将静态和动态资源混合在一起,这会有点麻烦,因为您不能仅使用COPY和整个文件夹并使用它来完成。在您的情况下,命令应类似于:

# Preparing layers for static resources
COPY static_files/*.param static_files/
COPY static_folders/folder* static_folders/

# Copying the rest of the resources
COPY static_files/*.py static_files/
COPY static_folders/*.py static_folders/
COPY dynamic* run.py requirements.txt .
但是,这非常笨拙且容易出错(当您添加带有新名称模式的新静态资源时,您很容易忘记调整Dockerfile),并且还会导致一堆层,而不是仅两个不同的静态层与动态层。因此,从长远来看,更改项目结构是否可以作为一项有值(value)的投资可能值得评估。

关于python - Dockerfile,如何减小更改层的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63844151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com