我有一个使用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
答案 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虚拟环境完全相同。