如何基于现有命令编写适配目录结构的Dockerfile与docker-compose.yml
TensorFlow Serving 容器化配置方案
Dockerfile 配置
官方tensorflow/serving镜像内置了服务启动逻辑,不需要手动覆写入口点,只需要预置启动参数对应的环境变量即可,配置内容如下:
FROM tensorflow/serving # 预置服务启动参数,和手动执行的tensorflow_model_server参数对应 ENV MODEL_NAME=model ENV MODEL_BASE_PATH=/model ENV REST_API_PORT=8601
如果不需要额外定制镜像(比如安装依赖、拷贝额外文件),甚至可以不用单独维护Dockerfile,直接在docker-compose里配置环境变量即可。
docker-compose.yml 配置
注意compose文件位于server目录下,模型目录是同级的上层model文件夹,相对路径为../model,不要使用Windows系统的反斜杠绝对路径,Docker可自动识别正斜杠写法的相对路径,完整配置如下:
services: tfserving: container_name: tfserving build: . # 基于当前目录的Dockerfile构建,若不用自定义Dockerfile可替换为image: tensorflow/serving ports: - "8601:8601" # 映射REST API端口 volumes: # 挂载上层目录的模型文件夹到容器内/model路径,和MODEL_BASE_PATH配置一致 - ../model:/model
如果选择不维护Dockerfile,直接用官方镜像的话,把环境变量补到compose配置里即可:
services: tfserving: container_name: tfserving image: tensorflow/serving ports: - "8601:8601" volumes: - ../model:/model environment: - MODEL_NAME=model - MODEL_BASE_PATH=/model - REST_API_PORT=8601
校验说明
- 现有目录结构符合要求:
model目录下以数字命名的子目录(1、2)为模型版本目录,TensorFlow Serving会自动加载序号最大的版本提供服务 - 服务启动后,访问
http://localhost:8601/v1/models/model,若返回模型版本状态信息则说明部署成功 - 不要手动覆写容器entrypoint为bash,官方镜像默认入口点会自动读取配置的环境变量启动模型服务,不需要手动进入容器执行启动命令
内容的提问来源于stack exchange,提问作者Test
相关产品推荐
相关产品推荐

