docker - MLFlow:无法为“mlflow models build-docker”指定基础镜像
问题描述
使用 mlflow 模型 build-docker,它总是从硬编码定义(mlflow.models.docker_utils.py 中的 _DOCKERFILE_TEMPLATE 字符串)创建图像,这是一个大约 3GB 的相当“重”的图像。这是一种否决此内置 dockerfile 定义的方法,以便您可以使用更轻量级的 docker 映像?此外,看起来 docker 映像正在通过 java 为模型提供服务,这引入了许多额外的依赖项。为什么默认不能只使用 python-func 概念,就像 mlflow 在本地系统上服务一样?
谢谢,顺便说一句,我真的很喜欢 mlflow!
2021 年 9 月 27 日更新:(回应评论)
如何重现:(来自 CLI)
mlflow models build-docker -m {model uri) -n {docker name}
docker 文件始终基于硬编码的内容
mlflow.models.docker_utils.py
在一个名为的字符串中
_DOCKERFILE_TEMPLATE
此字符串在函数中使用
_build_image(....) (line 80)
在第 103 行,它实际上用于基于此字符串创建本地 docker 文件
with open(os.path.join(cwd, "Dockerfile"), "w") as f:
f.write(
_DOCKERFILE_TEMPLATE.format(
我本来希望它将用户指定的 Dockerfile 作为输入,而不是硬编码的 _DOCKERFILE_TEMPLATE