我正在尝试构建一个将使用Keras模型提出建议的Django应用。现在,我正在尝试使用一个可容纳Django和Keras的自定义容器。这是我编写的Dockerfile。
filter
问题是,当我尝试构建应用程序映像时,即使reduce
在结果中列出了tensorflow(1.12),pip也无法安装tensorflow。
# myproject/docker/app/Dockerfile
FROM python:3.7-alpine # I've tried 3.5, 3.6 and 3.7
RUN apk add --no-cache postgresql-libs && \
apk add --no-cache --virtual .build-deps \
gfortran \
build-base \
freetype-dev \
libpng-dev \
openblas-dev \
postgresql-dev \
python3-dev \
wget
WORKDIR /app
COPY ./misc/requirements.txt /app/
RUN pip search tensorflow
RUN pip install tensorflow
RUN pip install -r /app/requirements.txt
COPY . /app
EXPOSE 8000
ENTRYPOINT ["exec /start.sh"]
我是否必须从源头构建张量流?
编辑
写下这个问题使我意识到我可以使用两个单独的容器:一个用于我的Django应用程序,另一个是使用gpu预先构建的tensorflow。我仍然想学习如何解决这样的问题,但是任何指向文档的如何使两个单独的Docker容器交谈的指针,我们将不胜感激。
答案 0 :(得分:3)
它看起来像tensorflow original source code(最多3.6),而Alpine linux是only publishes wheels,因为它使用的是musl
而不是glibc
。因此,pip
找不到合适的安装候选者而失败。最好的选择可能是从源代码构建或更改基本映像。
答案 1 :(得分:0)
根据您的工作,考虑是否完全需要alpine
。如果您和我一样,并且仅使用apk add
安装允许您安装某些Python软件包的程序,则最好删除所有apk add
命令并将FROM python:3.6-alpine
替换为{ {1}}。 Tensorflow的安装没有任何问题。
编辑:没关系,FROM python:3.6
仍然可以简单地安装Ubuntu。如果您正在寻找较小的图像而没有Alpine的某些缺点,请考虑改用FROM python:3.6
。