python - Docker - 微服务公开使用 fast.ai 训练的 ml 模型
问题描述
我正在尝试构建一个 docker 来运行一个微服务,该微服务将公开使用 fast.ai 训练的 ml 模型
我正在使用的 Dockerfile
FROM python:3.6-alpine
MAINTAINER Spandan Singh "developer.spandan@gmail.com"
COPY ./app/requirements.txt /app/requirements.txt
WORKDIR /app
RUN pip install -r requirements.txt
COPY . /app
CMD ["python", "server.py"]
requirements.txt 我正在使用
Flask==0.10.1
fastai==0.7.0
我收到以下错误:
Collecting pandas (from fastai->-r requirements.txt (line 2))
Downloading https://files.pythonhosted.org/packages/e9/ad/5e92ba493eff96055a23b0a1323a9a803af71ec859ae3243ced86fcbd0a4/pandas-0.23.4.tar.gz (10.5MB)
Complete output from command python setup.py egg_info:
/bin/sh: svnversion: not found
non-existing path in 'numpy/distutils': 'site.cfg'
Could not locate executable gfortran
Could not locate executable f95
Could not locate executable ifort
Could not locate executable ifc
Could not locate executable lf95
Could not locate executable pgfortran
Could not locate executable f90
Could not locate executable f77
Could not locate executable fort
Could not locate executable efort
Could not locate executable efc
Could not locate executable g77
Could not locate executable g95
Could not locate executable pathf95
Could not locate executable nagfor
don't know how to compile Fortran code on platform 'posix'
Running from numpy source directory.
/tmp/easy_install-t7xbqniu/numpy-1.16.0/setup.py:390: UserWarning: Unrecognized setuptools command, proceeding with generating Cython sources and expanding templates
run_build = parse_setuppy_commands()
/tmp/easy_install-t7xbqniu/numpy-1.16.0/numpy/distutils/system_info.py:625: UserWarning:
Atlas (http://math-atlas.sourceforge.net/) libraries not found.
Directories to search for the libraries can be specified in the
numpy/distutils/site.cfg file (section [atlas]) or by setting
the ATLAS environment variable.
self.calc_info()
return distutils.core.setup(**attrs)
File "/usr/local/lib/python3.6/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/local/lib/python3.6/distutils/dist.py", line 955, in run_commands
self.run_command(cmd)
File "/usr/local/lib/python3.6/distutils/dist.py", line 974, in run_command
cmd_obj.run()
File "/usr/local/lib/python3.6/site-packages/setuptools/command/bdist_egg.py", line 163, in run
self.run_command("egg_info")
RuntimeError: Broken toolchain: cannot link a simple C program
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-vuh6917n/pandas/
有谁知道我错在哪里?我应该使用其他基本图像吗?
解决方案
是的,您需要使用已安装大多数开发人员工具的操作系统中的另一个映像。我创建了一个 Dockerfile 进行相同的安装,如下所示:
FROM python:2.7.13
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "server.py"]
要求:
Flask==0.10.1
fastai==0.7.0
不同之处似乎是 Alpine 是一个较小的操作系统,具有轻量级代码库,因此他可能不包含所需的一切。
参考:
推荐阅读
- excel - 基于重复的总和值 - VBA
- c - 删除重复代码会导致冗余操作?
- javascript - 使用 PixiJS 应用各种过滤器
- c# - 我无法在 Android 中呈现 CalendarView
- c++ - 像 std::atomic_is_lock_free 这样的 c 风格的原子自由函数是干什么用的?
- python - Python3 Cython:函数 __annotation__ 产生 unicode 而不是 str
- apache - 在 URL 中隐藏 DocumentRoot 文件夹 (Apache)
- linux - 基于数字后缀拆分文件的问题
- visual-studio - 部署后重置 Azure Webapp 启动命令(Visual Studio -> 发布)
- django - 如何根据没有重复的外键对查询集进行排序