避免在每个Docker版本上重新安装软件包

避免在每个Docker版本上重新安装软件包,docker,docker-build,Docker,Docker Build,当我构建需要TensorFlow(导入TensorFlow)的新python应用程序的映像时,docker每次都会安装520MB的TensorFlow 如何避免这种情况?意味着只下载tensorflow一次,并在构建多个图像时使用它 Dockerfile FROM python:3 WORKDIR /usr/src/app COPY model.py . COPY model_08015_07680.h5 . COPY requirements.txt . COPY images . COP

当我构建需要TensorFlow(导入TensorFlow)的新python应用程序的映像时,docker每次都会安装520MB的TensorFlow

如何避免这种情况?意味着只下载tensorflow一次,并在构建多个图像时使用它

Dockerfile

FROM python:3

WORKDIR /usr/src/app

COPY model.py .
COPY model_08015_07680.h5 .
COPY requirements.txt .
COPY images .
COPY labels.txt .
COPY test_run.py .

RUN pip install --no-cache-dir -r requirements.txt

CMD ["python","./test_run.py"]
requirements.txt

numpy
opencv-python
tensorflow

请使用下面的
Dockerfile
,它经过了位优化,因为它不会一次又一次地安装依赖项,直到/除非您更改
requirements.txt

FROM python:3

WORKDIR /usr/src/app

#Copy Requirements
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

#Copy everything later, as below parts will be changing and above part will be used from cache
COPY model.py .
COPY model_08015_07680.h5 .
COPY images .
COPY labels.txt .
COPY test_run.py .


CMD ["python","./test_run.py"]

请使用下面的
Dockerfile
,它经过了位优化,因为它不会一次又一次地安装依赖项,直到/除非您更改
requirements.txt

FROM python:3

WORKDIR /usr/src/app

#Copy Requirements
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

#Copy everything later, as below parts will be changing and above part will be used from cache
COPY model.py .
COPY model_08015_07680.h5 .
COPY images .
COPY labels.txt .
COPY test_run.py .


CMD ["python","./test_run.py"]

您不需要单独复制每个文件,这不是最佳选择

另外,请记住docker是按层构建的,所以每一行看起来可能会发生变化的都会进入底部

FROM python:3

WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
#Copy everything
COPY . .    
CMD ["python","./test_run.py"]

您不需要单独复制每个文件,这不是最佳选择

另外,请记住docker是按层构建的,所以每一行看起来可能会发生变化的都会进入底部

FROM python:3

WORKDIR /usr/src/app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
#Copy everything
COPY . .    
CMD ["python","./test_run.py"]

您可以添加
Dockerfile
?我已经添加了Dockerfile。请查看下面的内容,如果您仍然面临任何问题,请告诉我。我强烈建议您查看这些问题,特别是技巧10(在单独的步骤中提取依赖项)和技巧11(使用多阶段生成删除生成依赖项)。如果您想对多个不同的图像重复使用您的依赖关系,您最好的选择是使用TensorFlow自己创建一个基础图像,或者在中搜索一个。这是否回答了您的问题?您可以添加
Dockerfile
?我已经添加了Dockerfile。请查看下面的内容,如果您仍然面临任何问题,请告诉我。我强烈建议您查看这些问题,特别是技巧10(在单独的步骤中提取依赖项)和技巧11(使用多阶段生成删除生成依赖项)。如果您想对多个不同的图像重复使用您的依赖关系,您最好的选择是使用TensorFlow自己创建一个基础图像,或者在中搜索一个。这是否回答了您的问题?等等,等等,我的疑问是1。现在我正在包装一个需要tensorflow的python应用程序。所以docker将安装tensorflow 2。但现在如果我想了解需要tensorflow的完全不同的python应用程序,那么docker将再次安装tensorflow,那么如何避免这种情况呢?然后为此目的,使用tensorflow创建一个基本映像,然后在每个
Dockerfile
中使用该基本映像。您能提供代码吗(如如何创建tensorflow的基本图像并将其用于另一个dockerfile)如果你想要一个
tensorflow
特定的基本映像,那么使用dockerhub上已经存在的
tensorflow/tensorflow
映像。如果你还想安装其他东西,那么通过运行前3行来创建一个基本映像。等等,我的疑问是1。现在我正在封装一个python应用程序n需要tensorflow。所以docker将安装tensorflow 2。但是现在如果我想对需要tensorflow的完全不同的python应用程序进行分析,那么docker将再次安装tensorflow,那么如何避免这种情况呢?为此,请使用tensorflow创建1个基本映像,然后在每个
Dockerfile
中使用该基本映像e提供代码(例如如何创建tensorflow的基本映像并将其用于另一个dockerfile)?如果您想要一个
tensorflow
特定的基本映像,那么可以使用dockerhub上已经存在的
tensorflow/tensorflow
映像。如果您还想安装其他东西,请运行前3行创建一个基本映像