我想使用一些从ubuntu到alpine的软件包

时间:2019-07-09 22:10:31

标签: docker ubuntu alpine

我有一个使用Python的高山图像的docker文件。它具有flask,json等。我想将numpy和rasterio软件包添加到docker文件中。我在docker hub或在线上找到的软件包只有适用于Ubuntu的软件包,但我需要它们用于高山映像。请建议

FROM alpine
RUN apk add python3 py-pip && pip install flask flask_json flask_cors 
requests pymongo 


WORKDIR /source
COPY . .
ENV FLASK_APP app.py
ENV FLASK_ENV development
EXPOSE 5000

CMD ["python", "-m", "flask", "run", "--host=0.0.0.0"]

我想将它们添加到docker文件中:

$ sudo add-apt-repository ppa:ubuntugis/ppa
$ sudo apt-get update
$ sudo apt-get install python-numpy gdal-bin libgdal-dev
$ pip install rasterio

2 个答案:

答案 0 :(得分:0)

ppa是ubuntu个人软件包网站,它提供deb软件包,您不能在高山中使用它。使用next在高山中找到一个:

orange@orange:~$ docker run -it alpine /bin/sh
/ # apk update
/ # apk list | grep numpy
py2-numpy-f2py-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py-numpy-f2py-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py-numpy-doc-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py3-numpy-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py-numpy-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py-numpy-dev-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py2-numpy-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)
py3-numpy-f2py-1.16.4-r1 x86_64 {py-numpy} (BSD-3-Clause)

根据this,gdal在边缘测试源中,那么您还需要将其添加到apk列表中。

因此,根据上述方法,最后是一个可行的Dockerfile:

FROM alpine

RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
RUN apk update && \
    apk add python3 python3-dev py3-numpy py-numpy-dev gdal gdal-dev build-base musl-dev && \
    pip3 install rasterio flask flask_json flask_cors requests pymongo

通过上述操作,您可以向其添加其他内容以形成最终的dockerfile。

答案 1 :(得分:0)

使用基于Ubuntu的Docker映像绝对没有错。它会比基于Alpine的图像大一些,但是这种空间差异通常并不明显。

还要注意,有一个official Docker Hub python image预先安装了基于Debian和Alpine的各种版本的解释器。 (您可能需要install software-properties-common to use add-apt-repository on a Debian base。)因此,最简单的预安装了Python 3并且可以运行这些APT命令的Dockerfile看起来像

FROM python:3-stretch
RUN apt-get update && apt-get install software-properties-common
RUN add-apt-repository ppa:ubuntugis/ppa
RUN apt-get update && apt-get install gdal-bin libgdal-dev
WORKDIR /source
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
ET cetera

其中the requirements.txt file lists out all of the Python packages you need to install与用于日常开发的非Docker虚拟环境完全相同。