2016-07-25 57 views
1

安装seaborn我想这个Dockerfile安装seaborn上泊坞窗高山

FROM alpine:latest 

RUN apk add --update python py-pip python-dev 

RUN pip install seaborn 

CMD python 

我得到的是有关numpyscipy(由seaborn必需的)错误。它始于:

/tmp/easy_install-nvj61E/numpy-1.11.1/setup.py:327: UserWarning: Unrecognized setuptools command, proceeding with generating Cython sources and expanding templates

File "numpy/core/setup.py", line 654, in get_mathlib_info

RuntimeError: Broken toolchain: cannot link a simple C program

Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-DZ4cXr/scipy/

The command '/bin/sh -c pip install seaborn' returned a non-zero code: 1

结尾的任何想法,我怎么能解决这个问题?

回答

4

要解决此错误,您需要安装gccapk install gcc

但是你会看到你会遇到一个新的错误,因为numpy,matplotlip和scipy有几个依赖关系。你还需要安装gfortranmusl-devfreetype-dev

这里是基于Dockerfile您最初的一个,将安装这些依赖关系以及seaborn

FROM alpine:latest 

# install dependencies 
# the lapack package is only in the community repository 
RUN echo "http://dl-4.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories 
RUN apk --update add --no-cache \ 
    lapack-dev \ 
    gcc \ 
    freetype-dev 

RUN apk add python py-pip python-dev 

# Install dependencies 
RUN apk add --no-cache --virtual .build-deps \ 
    gfortran \ 
    musl-dev \ 
    g++ 
RUN ln -s /usr/include/locale.h /usr/include/xlocale.h 

RUN pip install seaborn 

# removing dependencies 
RUN apk del .build-deps 

CMD python 

你会发现,我m使用apk-del .build-deps删除依赖项来限制图像的大小(http://www.sandtable.com/reduce-docker-image-sizes-using-alpine/)。

我个人还必须安装ca-certificates,但似乎你没有这个问题。

注意:您还可以从python:2.7-alpine图像构建图像,以避免自行安装python和pip。

+0

神奇,工作。它永远建立了容器,但最终完成(重量为693.3 MB)。谢谢你的一个很好的答案(解决了我的问题,并教会了我一些关于Docker最佳实践的内容)。 – emh

+1

@emh不客气。我还必须构建包含scipy的图像,并确认他们需要花时间从头开始构建。把它们缩小也很困难。至少它们比基于Ubuntu的映像小! –

+0

我无法在测试存储库ATM中找到'lapack-dev'(使用'python:alpine' docker image alias for python:3.6-alpine'),所以我需要使用http://dl-4.alpinelinux .org/alpine/latest-stable/community获取'lapack-dev'包 – shadi